将argv [1]与字符串的第一个字符进行比较

时间:2017-10-20 20:36:36

标签: c string argv strcmp

我有文件字符串。每个字符串都在新行上。现在我需要比较argv [1]是否与任何这些字符串的第一个字符相同。我是C的新手,我不确定我是否正在使用正确的功能

这是代码:

int main(int argc, char *argv[]) {

char character[100][100];
int i = 0;
int result;

while((fgets(character, 100, stdin) != NULL) && (i < 100)){ 
    fputs(character, stdout);   
    if(character[0] == argv[1]){
        printf("Yes");
    }

    result = strcmp(character[0], argv[1]);

    if(result == 0){
        printf("TRUE");

    }
    i++;
}
return 0;   

}

1 个答案:

答案 0 :(得分:1)

函数fgets需要类型为char *的参数,而参数character的类型为char ( * )[100]

您必须使用character[i]作为参数。

也是这种比较

 if(character[0] == argv[1]){

是错误的,因为比较中的两个操作数都转换为指向其第一个字符的指针,并且这些指针被比较而不是比较指针指向的字符。

至少你应该写

 if( *character[0] == *argv[1]){

如果你需要找到文件中的第一个记录,其第一个字符等于argv[1]的第一个字符,那么while语句应该是这样的(尽管在这种情况下不需要声明一个二维数组)

char *p = NULL;
while( ( i < 100 ) && ( ( p = fgets(character[i], 100, stdin) ) != NULL) && ( *p != *argv[1] ) ) ++i; 

if ( i != 100 && p != NULL ) 
{
        printf("Yes");

        result = strcmp( p, argv[1]);

        if(result == 0) printf("TRUE");

}