字符串比较在c语言中未按预期工作 #包括 #包括 int main(){ char str1[50]=“测试太阳升起”; char str2[4][90]={“sun”,“in”}; char delim[]=“”; char*ptr=strtok(str1,delim); while(ptr!=NULL){ int i=0; 对于(i=0;i
你需要调整你的测试字符串比较在c语言中未按预期工作 #包括 #包括 int main(){ char str1[50]=“测试太阳升起”; char str2[4][90]={“sun”,“in”}; char delim[]=“”; char*ptr=strtok(str1,delim); while(ptr!=NULL){ int i=0; 对于(i=0;i,c,strtok,strcmp,C,Strtok,Strcmp,你需要调整你的测试if(-1)C为真,并且strcmp()不返回真或假,它返回一个正或负的数字,如果两个字符串匹配则返回零,这意味着if(strcmp(str2[i],ptr)总是真的,除非str2[i]匹配ptr,您可以通过使用类似这样的东西来查找匹配项if(strcmp(str2[i],ptr)==0)或if(!strcmp(str2[i],ptr))来解决这个问题,它仅在strcmp返回0时才返回true,您的测试相当于if(strcmp(str2[i],ptr)!=0) 您可以在结果中看
if(-1)
C为真,并且strcmp()
不返回真或假,它返回一个正或负的数字,如果两个字符串匹配则返回零,这意味着if(strcmp(str2[i],ptr)
总是真的,除非str2[i]匹配ptr,您可以通过使用类似这样的东西来查找匹配项if(strcmp(str2[i],ptr)==0)
或if(!strcmp(str2[i],ptr))
来解决这个问题,它仅在strcmp返回0时才返回true,您的测试相当于if(strcmp(str2[i],ptr)!=0)
您可以在结果中看到sun
的原因是:sun
与Test
和raised
不匹配,
如果您试图查找不存在的字符串,请将代码更新为
#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;
}
intmain()
{
char str1[50]=“测试太阳升起”;
char str2[4][90]={“sun”,“in”};
char delim[]=“”;
char*ptr=strtok(str1,delim);
while(ptr!=NULL){
int i=0;
int=0;
对于(i=0;iAbove代码未按预期工作注意:strcmp(str2[i],ptr)
在字符串不同时为真(非0)。Krishna Reddy CH,这就是您想要的吗?是的,我想要不同的字符串,但它不会出现“下面的代码应返回测试并引发,但它返回所有字符串。”很抱歉,这个语句没有任何意义。当“代码>!=0</CODE”时,“太阳”这个词似乎是匹配的,这意味着它没有找到,是因为其他字符串中的一个不匹配。考虑“<代码> STRCMP(STR2(2),PTR)<代码> >更改<代码>如果(STRCMP(STR2[i],PTR))< /C> >代码> >(STRCMP(STR2[i],PTR)=0)。
之后,您的程序输出sun
。您是在尝试查找匹配项还是它不存在?使用!=0
时可以看到sun的原因是,sun match wich-sun但与Test和raised=>不匹配,您将在结果中看到它我想要的字符串在str2数组中不存在
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);
}