在while循环中控制getchar()

时间:2013-11-19 03:22:42

标签: c getchar

假设我有一个简单的while循环来输入** 1 * 0 *个字符。 超过10之后,我希望循环停止。 但是,break似乎没有生效。 只有当我按Enter时才会结束。有人可以解释一下吗?

int count = 0;
int numchars = 10;
ch = getchar();
while( ch != '\n' && ch != '\0' ) {     
    array[count] = ch;
    count++;    
    if ( count > numchars ){        
        break;          
    }
    ch = getchar(); 
}

感谢。

2 个答案:

答案 0 :(得分:2)

即使你的tty连接到stdin,stdin也不是你的tty。除非你将你的tty置于原始模式,否则程序在你返回之前根本看不到任何数据。当你点击返回时,该行上的所有数据都被发送到程序,然后程序进入循环并读取字符,直到它突然出现循环。如果你真的希望程序在按下它们时看到字符,你需要做更多的工作。首先查看ncurses之类的库,然后研究如何将tty放入原始模式。然后编写需要用户返回的简单程序。

答案 1 :(得分:0)

getch()个字符使用getche()getchar()代替numchars=910