-1

编辑:DanielFischer 指出了下面代码的问题,以防有人好奇。

如果用户输入一个格式化的字符串并按下回车键,那么究竟是什么发送到读取它的程序?

Enter name> John Smith

这是否仅发送以空字符结尾的字符串,还是有一个表示字符表示它们也按 Enter 键?

编辑:我认为迈克说的是真的。但是为什么这段代码不起作用呢?

printf( "Enter command> " );
memset( buf, 0, BUFSIZ );
do{
    temp = getchar();
    if{ temp != '\n' ) strcat( buf, &temp );
}while( temp != '\n' );
strcat( buf, "\0" );
4

1 回答 1

3

发送到终端的是 10 个字符:

[J][o][h][n][ ][S][m][i][t][h][\n]

程序如何处理它取决于用于读取输入的函数。最后一个字符 ( '\n') 表示我们点击了“enter”。

空终止字符串是程序内部的一个概念(即字符串函数需要它正常工作),您不会stdin在示例中看到空终止符。

这就是为什么您需要了解从用户接收数据的函数是如何工作的,如果它采用换行符,您可能需要将其剥离。如果它没有自动附加一个空终止符,您可能应该添加一个,等等。

于 2013-06-20T19:36:29.883 回答