我已经看过这个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
答案 0 :(得分:1)
首先尝试使用以下内容:
1)条件应为if (c != '\n' && c != '\r')
2)和while循环,如果终端是行缓冲的,那么你最好使用ncurses库中的getch
,大多数平台都应该有库包。
while((c =getchar())!='\n') {
putchar(c);
}