我有文件字符串。每个字符串都在新行上。现在我需要比较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;
}
答案 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");
}