gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:54:20 26 4
gpt4 key购买 nike

我有带字符串的文件。每个字符串都换行。现在我需要比较 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;

}

最佳答案

函数 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");

}

关于将 argv[1] 与字符串的第一个字符进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46856968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com