我无法在c编程语言中使用'\0'
完成while循环,c代码如下
#include<stdio.h>
char r;
int main()
{
do
{
scanf("%c", &r );
printf("%c", r);
}
while (r!='\0');
return 0;
}
我的问题是程序永远不会在类型化字符串行的最后一个字符处完成,因为scanf
而while循环始终处于等待模式,所以永远不会转到return 0
。我不知道为什么会这样。
这个程序的输出是这样的:
1234
2345
4556
7788
2345, 4556, 7788
这些是我输入的数字,但程序永远不会完成(永远不会转到return 0
),我想只打印一个字符串,我希望程序结束。
答案 0 :(得分:2)
典型的用户输入是行,一系列字符,包括最终searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchableActivity.class)));
。
作为用户输入的一部分,'\n'
只是另一个角色。通常很难键入。有些键盘允许使用 Ctrl Shift @ 或其他方式@user3629249
输入时使用的字符串(一系列字符,包括最终'\0'
)很少。
要处理用户输入,一种简单的方法是使用'\0'
来读取用户输入的行。该输入将fgets()
保存为字符串,方法是将空字符 fgets(buf)
附加到读取的字符中:全部保存在{{1}中}。
'\0'
要结束用户输入,通常的方法是发出&#34;文件结束信号&#34;,请参阅recognise return as EOF on the console
如果代码必须使用buf
,请检查返回值以检测文件结束或输入错误。 @user3629249
#include<stdio.h>
int main(void) {
char buf[100];
if (fgets(buf, sizeof buf, stdin) == NULL) {
puts("End-of-file or error encountered");
} else {
// maybe lop off the potential trailing \n from buf
buf[strcspn(buf, "\n")] = '\0';
printf("User input was <%s>\n", buf);
}
return 0;
}