我有一个代码,如果运行, scanf 将要求输入 char 类型的值。如您所见,代码没有for循环或执行while,但是如果插入了值,则代码重新运行,只要该值是 char 类型。希望有人可以提供帮助:)
#include <stdio.h>
main(){
char name;
clrscr();
printf("welcome who?\n->");
scanf("%s",&name);
getche();
return 0;
}
答案 0 :(得分:5)
您遇到未定义的行为。未定义的行为意味着您正在做一些您不应该做的事情,并且标准没有定义,这意味着允许编译器对您的程序执行任何操作。这包括正常工作,永远循环,删除您喜欢的图片或w / e。
查看变量的名称,您似乎想要阅读一个完整的名称&#39;在单个char
变量中,它只有一个字母的内存。
将其更改为:
#include <stdio.h>
main(){
char name[51]; // make a char array that's large enough to hold the name
clrscr();
printf("welcome who?\n->");
scanf("%50s",&name); // read a string of up to 50 characters.
getche();
return 0;
}
请注意,我们需要比我们为&#39; \ 0&#39;字符串中的字符,意味着您的原始代码甚至无法读取单个字符。
另外作为一般性的个人建议,请不要使用Turbo C / C ++,除非你被教授绝对强迫,否则它们已经过时了。