我正在尝试将char *的内容与字符串进行比较。我能够打印出内容但无法比较它们。
#include<stdio.h>
int input(char * x){
int i,j = 0;
char myArray[10];
x = myArray;
scanf("%s", x);
for(x; *x !='\0'; x++){
if(*x == "ne"){
printf("%d",1);
return 0;
}
}
}
答案 0 :(得分:2)
OP的代码很好地遍历x
...
for(x; *x !='\0'; x++){
...但随后尝试将char
的每个x
与"ne"
的地址进行比较。
if(*x == "ne"){ // bad code
要比较2 char *
指向的字符串,可以创建自己的strcmp()
请注意,当字符串匹配时,实数strcmp()
返回0,或者根据哪个为“更大”,返回正值或负值。 OP似乎只需要相等或不相等。
// Return 1 if the same
int my_streq(const char *s1, const char *s2) {
while (*s1 == *s2 && *s1) {
s1++;
s2++;
}
return *s1 == *s2;
}
int readinput(char * x) {
....
if (my_streq(x, "ne")) {
printf("%d",1);
return 0;
}
....
}