所以我尝试编译我得到一个警告:指针和整数之间的比较[默认启用]错误,我做错了什么??
int main(int argc, char *argv[])
{
char x;
printf("What would you like to do today?\n");
scanf("%s", &x);
if (x == "slm") {
printf("You SLAM a Faygo!");
} else if(x == "kik") {
printf("You KICK the Wicked Elixir!");
}
return 0;
}
答案 0 :(得分:7)
三个问题:
您需要读取字符串,而不是char(考虑到缓冲区溢出),例如:
char x[128];
scanf ("%128s", x);
您无法将字符串与==进行比较:您需要使用strcmp:
#include <string.h>
...
if (0 == strcmp (x, "slm")) { ... }
您应该检查scanf的成功/失败返回码:
if (1 != scanf (...)) {
perror ("scanf");
return EXIT_FAILURE;
}
(EXIT_FAILURE在stdlib.h中定义。)
答案 1 :(得分:3)
x
是一个字母。和&#34; slm&#34;是一个字符串 - char *
。
您可能想要更改它:
char *x;
但现在你需要分配内存。例如:
char *x = (char *)malloc(MAX_LENGTH*sizeof(char));
此外,fvu是正确的 - 使用if(!strcmp(x,"slm"))
代替if(x ==slm)
(strcmp
在字符串相同时返回0)
答案 2 :(得分:0)
你需要: