当前位置:  开发笔记 > 编程语言 > 正文

Turbo C - 停止代码重新运行

如何解决《TurboC-停止代码重新运行》经验,为你挑选了1个好方法。

我在下面有一个代码,如果运行,scanf将要求char类型值.正如您所看到的,代码没有for循环或执行while,但是如果插入了值,则只要值为char类型,代码就会重新运行.希望有人可以帮忙:)

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

user1942027.. 5

您遇到了未定义的行为.未定义行为意味着你正在做的事情是,你不应该和标准没有定义,这意味着编译器允许使用你的程序做任何事情.这包括正常工作,永远循环,删除您最喜欢的图片或w/e.

看着你的变量好像你想读一个完整的"名"成一个单一的名称char变量,它只有单一字母记忆虽然.

将其更改为:

#include 
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;
}

请注意,我们需要比字符串中'\ 0'字符读取的空间多1个空格,这意味着您的原始代码甚至无法读取单个字符.

另外作为一般的个人建议,请不要使用Turbo C/C++,除非你被教授绝对强迫,他们已经完全过时了.



1> user1942027..:

您遇到了未定义的行为.未定义行为意味着你正在做的事情是,你不应该和标准没有定义,这意味着编译器允许使用你的程序做任何事情.这包括正常工作,永远循环,删除您最喜欢的图片或w/e.

看着你的变量好像你想读一个完整的"名"成一个单一的名称char变量,它只有单一字母记忆虽然.

将其更改为:

#include 
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;
}

请注意,我们需要比字符串中'\ 0'字符读取的空间多1个空格,这意味着您的原始代码甚至无法读取单个字符.

另外作为一般的个人建议,请不要使用Turbo C/C++,除非你被教授绝对强迫,他们已经完全过时了.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有