卡在数组和字符串中与strcmp进行比较c

时间:2017-08-25 12:47:38

标签: c arrays if-statement char strcmp

卡在数组和字符串中与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;
}

2 个答案:

答案 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])