2015-02-01 7 views
-1

나는 약간 붙어있어 내가 잘못하고있는 것을 빨리 찾을 수 있기를 바란다. 나는 탭을 탭이 아닌 출력을위한 공백으로 간주하게하고 싶다. 이 경우 3 칸 = 1 탭을 사용하고 있습니다. 저는 그것이 지금부터 탭을 탭으로 읽는 중이기 때문에 처음의 성명서를 어떻게 설정하는지와 관련이 있다고 가정하고 있습니다.C - 입력 스트림에서 읽음. 공백으로 탭.

int main() 
{ 
    int i, c; 
    int N = 3; 

    while ((c = getchar()) != EOF && c != '\n') 
    putchar (c); 
    while ((c = getchar()) == '\t') 
    for (i=1; i<=N; i++) 
    { 
     putchar(' '); 
    } 
    system("Pause"); 
} 
+0

더 설명 당신은 무엇을? 어디에서 입력을 읽고 어디에서 출력합니까? – 3bdalla

+0

당신의 OS는 무엇입니까? – Axalo

+0

@ 3bdalla 터미널에서 방금하고 있습니다. 입력은 사용자 입력에서 터미널로 읽어지고 출력은 다음 줄에 표시됩니다. 탭이없는 경우 기본적으로 반복됩니다. 탭 대신 공백이 표시되어야합니다. – user3594736

답변

2

이 시도 :

int main() 
{ 
    int i, c; 
    int N = 3; 

    // exit on Ctrl-C 
    while((c = getch()) != 3) 
    { 
     if(c == '\t') 
     { 
      for(i=1; i<=N; i++) 
      { 
       putchar(' '); 
      } 
     } 
     else if(c == '\r') 
     { 
      putchar('\r'); 
      putchar('\n'); 
     } 
     else 
     { 
      putchar(c); 
     } 
    } 
} 
+0

고마워, 나는 일하도록했다. 그래도 조금 바뀌어야 했어. getch()는 getchar()이어야하고! = EOF (3이 아니라) 여야합니다. '\ r'이 무엇 인지도 모릅니다. 어쨌든 전체 조각이 필요하지는 않습니다. – user3594736