我正在显示名称,并在输入回车键时停止程序。在下面的代码中,我得到了正确的结果(我知道"得到"已弃用):
#include <stdio.h>
main()
{
char name[50];
while(1)
{
printf("Name: ");
scanf("%s", name);
if(name[0]=='\0')
break;
else
printf("Name entered: %s\n", name);
}
}
但是当我尝试使用scanf时:
printf("Nome: ");
scanf("%s", nome);
这次条件name[0]=='\0'
永远不会成立。为什么? '\0'
在这些函数中的工作方式不同?
答案 0 :(得分:1)
如果scanf
无法为变量赋值(因为输入流有空格,终止&#39;字符串&#39;),它就不会清除它;部分原因是并非所有变量都具有明显的“清晰”特征。状态。
因此,在您的scanf之后,nome
仍然包含之前包含的内容。您需要检查scanf是否能够通过测试其返回值来分配变量:
if (scanf(...) == 1)
- 这意味着scanf成功分配了一个变量?&#39;
答案 1 :(得分:-1)
使用&#34; scanf&#34;变量不会变成一个字符串但是&#34;得到&#34;变量(名称)变为字符串,因为&#34;得到&#34;自动放置&#39; \ 0&#39;在它?