#include <stdio.h>
#include <stdlib.h>
int main()
{
char c = getchar();
while(c != EOF)
{
if(c=='\t')
{
printf("\\t");
c=getchar();
}
if(c=='\\')
{
printf("\\\\");
c=getchar();
}
else
{
printf("%c", c);
c=getchar();
}
}
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c = getchar();
while(c != EOF)
{
if(c=='\t')
{
printf("\\t");
c=getchar();
}
if(c=='\\')
{
printf("\\\\");
c=getchar();
}
if(c!='\t' && c!='\\')
{
printf("%c", c);
c=getchar();
}
}
}
여기서 위코드는 실행이 안되고 아래 코드는 실행이 됩니다!!!
else의 상황과 if(c!='\t' && c!='\\')의 상황이
제생각에는 똑같은것 같은데요
else를 쓰면 \t가 표시되긴 하는데 탭공백이 사라지지 않네요
왜 이런 현상이 발생하는..거죠?
이유는 간단합니다
if(c=='\t')
{
printf("\\t");
c=getchar();
}
if(c=='\\')
{
printf("\\\\");
c=getchar();
}
else
{
printf("%c", c);
c=getchar();
}
이런 코드면
if와 if-else구문이 따로 구분되어있는겁니다.
위에 if에서 탭을 무시했다고 아래 if-else에서 무시하지는 않겠죠?
작성자의 의도는 if elseif else인듯합니다만...