当用户在控制台中按Enter键时,该程序发送了什么?

时间:2013-06-20 19:31:30

标签: c console

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

如果用户输入格式化的字符串并按下输入确切发送给程序的内容,请阅读它?

Enter name> John Smith

这是否只发送空终止的字符串,或者是否有一个表示他们也会输入的符号字符?

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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