回显来自stdin的getchar和'\ n'char

时间:2012-04-17 05:19:03

标签: c echo stdin getchar

我已经看过这个similar question,但我仍然想知道是否有另一种方法可以停止1)终端与portabilty回应,因为这是一个赋值,我已经有一个java程序崩溃并烧毁我的老师计算机2)在我的程序中我搜索'\n'字符然后如果它不是第一个字符使用getchar然后putchar,直到下一个'\n'字符工作使用重定向stdin时很好但是当我尝试使用没有重定向的程序时,输入键总是被回显,这是与终端回显有关还是我需要检查除'\n'之外的不同字符?我也试过包括'/r'并进行了大量的谷歌搜索,但似乎回声的答案是不能用portabilty完成的?

#include <stdio.h>
#include <string.h>

int first_line(char);
int main(){

char c;

while((c = getchar())!=EOF){
    first_line(c);
}   

return 0;
}

int first_line(char c){
if (c != '\n'||c != '\r'){
    putchar(c);

    do{
        c = getchar();
        putchar(c);}
    while( c !='\n');
}

return 0;
}

谢谢Lachlan

1 个答案:

答案 0 :(得分:1)

首先尝试使用以下内容:

1)条件应为if (c != '\n' && c != '\r')

2)和while循环,如果终端是行缓冲的,那么你最好使用ncurses库中的getch,大多数平台都应该有库包。

    while((c =getchar())!='\n') {
       putchar(c);
    }