C 如何检查字符数组中是否存在特定字符

C 如何检查字符数组中是否存在特定字符,c,C,如何在字符数组中搜索特定字符 遵循我的代码,但我认为它在函数strchr中不正确: while((c = getc(fp)) != EOF) { for (i = 0; i < 1; i++) { c2[i] = c; int test = strchr(";", c2[i]); } printf("%c", c); } while((c=getc(fp))!=EOF){ 对于(i=0;i索引,名称“lucas”将是结构->数据。对于读取的每个字

如何在字符数组中搜索特定字符

遵循我的代码,但我认为它在函数
strchr
中不正确:

while((c = getc(fp)) != EOF) {
   for (i = 0; i < 1; i++) {
      c2[i] = c;
      int test = strchr(";", c2[i]);
   }
   printf("%c", c);
}
while((c=getc(fp))!=EOF){
对于(i=0;i<1;i++){
c2[i]=c;
int test=strchr(“;”,c2[i]);
}
printf(“%c”,c);
}

我有一个包含int索引、int数据和指向下一个寄存器的指针的结构。我用来自.cvs文件的一些数据填充数组(c2[100])。在我数组的第一个寄存器中,我得到了这样的值:800;卢卡斯。我需要找到角色“;”在这个数组中,将其拆分,然后数字800将是结构->索引,名称“lucas”将是结构->数据。

对于读取的每个字符,您将其存储到
c2[]
数组的第一个插槽中(忽略数组的其余部分),然后调用
strchr()
检查读取的字符是否为
或否。使用
strchr()
进行此操作是过分的。以下几点要简单得多:

while((c = getc(fp)) != EOF)
{ 
    if (c == ';')
    {
        ...
    }
    printf("%c", c); 
} 
如果您实际上试图搜索数组,那么您使用的
strchr()
方法是错误的。它应该更像这样,假设
c2[]
已经包含要搜索的以null结尾的字符串数据:

while((c = getc(fp)) != EOF)
{ 
    int test = strchr(c2, c); 
    ...
    printf("%c", c); 
} 

man 3 strchr-在shell上执行此操作,并阅读手册页以了解
strchr
的功能。您是如何声明
c
c2
的?我真的不知道此代码在做什么。你想找的角色是什么?是不是
c2[i]
?循环结束于0是有意的吗?(
i<1
意味着你的
i
永远都不是
>0
)如果只有一次迭代,为什么需要循环?你想实现什么?你知道循环只运行一次吗?我有一个包含int索引、int数据和指向下一个寄存器的指针的结构。我用来自.cvs文件的一些数据填充数组(c2[100])。在我数组的第一个寄存器中,我得到了这样的值:800;卢卡斯。我需要找到角色“;”然后使用我给你的第二个例子,
strchr()
的第一个参数传递给你的缓冲区,它包含
“800;lucus”
字符串。但是,您提到要拆分缓冲区,在这种情况下,您可以使用
strtok()
,或者更好的
sscanf()
,而不是使用
strchr()