Turbo C - 停止代码重新运行

时间:2015-12-26 10:19:47

标签: c

我有一个代码,如果运行, scanf 将要求输入 char 类型的值。如您所见,代码没有for循环或执行while,但是如果插入了值,则代码重新运行,只要该值是 char 类型。希望有人可以提供帮助:)

#include <stdio.h>
main(){
char name;
clrscr();
printf("welcome who?\n->");
scanf("%s",&name);
getche();
return 0;
}

1 个答案:

答案 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 ++,除非你被教授绝对强迫,否则它们已经过时了。