2015-02-01 2 views
-1

Я немного застрял и надеюсь, что кто-то может быстро взглянуть на то, что я делаю неправильно. Я хочу, чтобы вкладки считались пробелами для вывода, а не вкладками. В этом случае я использую 3 пробела = 1 вкладку. Я предполагаю, что это может быть связано с тем, как я настроил свой первый оператор while, так как сейчас он читает вкладку в качестве вкладки.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

Какая у вас ОС? – 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

Смежные вопросы