为什么这个简单的C程序不能运行?
此代码将不会运行。谁能告诉我为什么为什么这个简单的C程序不能运行?,c,string,if-statement,C,String,If Statement,此代码将不会运行。谁能告诉我为什么 #include <stdio.h> #include <string.h> main (){ char user[7]; printf("Username\n"); scanf("%s",user); if(user == 'admin'){ printf("Hello World"); }else{ printf("Bad"); } retu
#include <stdio.h>
#include <string.h>
main (){
char user[7];
printf("Username\n");
scanf("%s",user);
if(user == 'admin'){
printf("Hello World");
}else{
printf("Bad");
}
return(0);
}
这是一个有效的例子。您需要使用来比较字符串。如果字符串相等,strcmp返回0。 如果已知最大输入长度,则还应在scanf中使用长度说明符或列出的建议之一,以防止缓冲区溢出
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv)
{
char user[7];
printf("Username:\n");
scanf("%6s", user);
if(!strcmp(user, "admin"))
{
printf("Hello World");
}
else
{
printf("Bad");
}
return 0;
}
这不起作用,因为您以错误的方式比较两个字符串。你需要使用。检查答案以查看strcmp在C中返回的内容 要使程序正常工作,请更改行
if (user == 'admin')
到
此外,在极少数情况下,使用scanf可能有点危险。我更喜欢使用FGET作为字符串。要使用FGET,请执行以下操作:
如果user==“admin”错误。使用strcmp。顺便说一句,在您的情况下,它是int mainvoid。但是,此代码将不会运行。谁能告诉我为什么?是离题的。您无法比较Javascript或Java中的内容。使用%s这样的功能可以很好地邀请用户输入6个以上的字符,然后把一切都搞糟。@PopescuAlexandruConstantin实际上,这里的情况与Java相同
if (strcmp (user, "admin") == 0)
fgets (user, sizeof (user), stdin);