1

我已经看过这个类似的问题,但我仍然想知道是否有另一种方法来停止 1)终端与便携性相呼应,因为这是一项任务,我已经有一个 java 程序崩溃并在我的老师计算机上烧毁 2)在我的程序我搜索一个'\n'字符然后如果它不是第一个字符使用getchar然后putchar直到下一个'\n'字符在使用重定向时工作正常stdin但是当我尝试使用没有重定向的程序时回车键总是回显,这与终端回显还是我需要检查不同的字符'\n'?我也尝试过包括'/r'并做了很多谷歌搜索,但似乎回声的答案不能通过便携性来完成?

#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;
}

谢谢拉克兰

4

1 回答 1

1

首先尝试以下内容:

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

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

    while((c =getchar())!='\n') {
       putchar(c);
    }
于 2012-04-17T05:38:02.087 回答