我正在学习一些在线教程。我不明白为什么 IF 选择语句不起作用??
#include <stdio.h>
int main(){
char namedata[50], names;
int n;
printf("Enter Number of family members being enter into program \n");
scanf("%d", &n);
for (names=0; names<n; ++names)
{
printf("Enter family member name:\n");
scanf("%s", &namedata);
printf("name:");
puts(namedata);
}
if (namedata = john)
{
prinf("john is cool");
}
return 0;
}
最佳答案
您的代码中存在各种问题:
- 您的
scanf
是对未定义行为的邀请,因为您不限制要读取的字符数。如果用户输入超过 49 个字符怎么办? - 始终检查
scanf
的结果。 names
必须为int
。john
应为“john”
。- 仅供引用:比较运算符是
==
,而不是=
。你的编译器实际上应该提示!如果没有,请启用警告并使用-std=c99
(gcc) 进行编译。
主要问题:您无法像 C 中那样比较字符串。仅当字符串安全时才使用 strcmp
,否则使用更安全的版本之一。
对于 scanf
使用格式说明符 %49s
将输入限制在有效范围内。
关于c - 选择语句 IF 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31226836/