#include <stdio.h>
#include <string.h>
int main() {
char str1[50]="TEST sun raised";
char str2[4][90]={"sun","in"};
char delim[] = " ";
char *ptr=strtok(str1,delim);
while (ptr!=NULL) {
int i=0;
for (i=0; i<4; i++) {
if(strcmp(str2[i],ptr)) {
printf("%s\n",ptr);
break;
}
else {
}
}
ptr=strtok(NULL,delim);
}
return 0;
}
下面的代码应该返回 Test 并引发,但它返回所有字符串
最佳答案
你需要调整你的测试 if(-1)
C 为 true ,并且 strcmp()
不返回 true 或 false ,它返回一个正数或负数,如果两个字符串匹配则为零,这意味着 if(strcmp(str2[i],ptr)
始终为 true,除非 str2[i] 与 ptr 匹配,您可以使用类似的方法来解决此问题用于查找返回 true 的 if(strcmp(str2[i],ptr) == 0)
或 if(!strcmp(str2[i],ptr))
匹配项仅当 strcmp 返回 0 时,您的测试相当于 if(strcmp(str2[i],ptr) != 0)
您在结果中看到 sun
的原因是: sun
与 Test
和 raised
不匹配,
如果您试图查找不存在的字符串,请将您的代码更新为此
int main()
{
char str1[50]="TEST sun raised";
char str2[4][90]={"sun","in"};
char delim[] = " ";
char *ptr=strtok(str1,delim);
while(ptr!=NULL){
int i=0;
int found = 0;
for( i=0;i<4;i++){
if(strcmp(str2[i],ptr)==0){
found++;
break;
}
}
if(found == 0) printf("%s does not exist \n",ptr);
ptr=strtok(NULL,delim);
}
关于c - 字符串比较在 C 语言中无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59129502/