卡在数组和字符串中与strcmp c比较
为什么它有效?
编译器卡在if(strcmp(c,ch[i]) == 0){
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char ch[]="asdfghjkl";
char c;
int n=sizeof(ch)/sizeof(char);
scanf("%c",&c);
for(int i=0;i<n;i++){
if(strcmp(c,ch[i]) == 0){
printf("%c is in %d\n",c,i+1);
break;
}else if(i==n-1){
printf("%c not fond\n",c);
}
}
return 0;
}
答案 0 :(得分:1)
我相信您的编译器应抱怨您错误地使用strcmp
:您正在将两个字符传递给两个const char*
,这绝对是一个UB。如果你的编译器通过抛出错误来阻止你这样做,那就好了。
strcmp
的原型是(string.h
)
int strcmp(const char * s1, const char * s2);
由于你有两个字符而char
是基本类型,你可以直接比较它们:
if ( c == ch[i] )
答案 1 :(得分:0)
strcmp声明: int strcmp(const char * s1,const char * s2);
strcmp需要字符串,但是你试图传递char。
使用
if (c == ch[i])