gpt4 book ai didi

c - Turbo C - 停止代码重新运行

转载 作者:行者123 更新时间:2023-11-30 21:15:20 24 4
gpt4 key购买 nike

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

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

最佳答案

您遇到未定义的行为。未定义的行为意味着您正在做一些不应该做的事情,并且标准没有定义,这意味着编译器可以对您的程序做任何事情。这包括正常工作、永远循环、删除您最喜欢的图片或 w/e。

查看变量的名称,似乎您想将完整的“名称”读取到单个 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;
}

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

另外,作为一般性个人建议,请不要使用 Turbo C/C++,除非教授绝对强制您使用,它们已经完全过时了。

关于c - Turbo C - 停止代码重新运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34470396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com