gpt4 book ai didi

C - 使用 char str() 函数时出现运行时错误

转载 作者:行者123 更新时间:2023-11-30 17:16:18 25 4
gpt4 key购买 nike

我有一个全局变量,字符。

char character[1];
char str(){
if (strcmp(character,"N")) {
return 'N';
}else if (strcmp(character,"S")) {
return 'S';
}else if (strcmp(character,"E")) {
return 'E';
}else if (strcmp(character,"W")) {
return 'W';
}else if (strcmp(character,"Q")) {
return 'Q';
}else if (!((strcmp(character,"N"))||(strcmp(character,"S"))||(strcmp(character,"E"))||(strcmp(character,"W"))||(strcmp(character,"Q")))) {
return '!';
}
}

这个函数编译得很好,但是当我在 int main() 函数中使用时,程序由于一些运行时错误而崩溃。浏览器:

scanf("%s", character);
printf("%s", str()); //crashes here

----- 甚至 -----

scanf("%s", character);
char *str_ptr = str(); //crashes here
printf("%p", *str_ptr );

最佳答案

strcmp 函数比较两个字符串。

因此,两个参数都必须是 NUL 终止的字符串。

char 字符[1] 没有空间同时容纳字符和 NUL 终止符。

代码实际上只是将全局变量中的单个字符与文字字符进行比较。

建议

if( 'N' == character[0] ) return 'N';
....
// used when character[0] does not match any of the above comparisons.
return '!';

注意:每个感兴趣的字符都有一个“if”语句,后面跟着返回 '!';

关于C - 使用 char str() 函数时出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29689026/

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