C语言 尝试计算字符串中逗号的数量并保存到int计数器

kulphzqa  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(98)

我一直收到一个错误,上面写着“警告:指针与整数的比较”。我试过使用char*,仍然得到同样的错误。我想计算字符串中出现的逗号的数量,并将出现的次数放入计数器中。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

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

    /*FILE *fp;
    fp = fopen("csvTest.csv","r");
    if(!fp){
        printf("File did not open");
    }*/

    //char buff[BUFFER_SIZE];
    char buff[100] = "1000,cap_sys_admin,cap_net_raw,cap_setpcap";    

    /*fgets(buff, 100, fp);
    printf("The string length is: %lu\n", strlen(buff));
    int sl = strlen(buff);*/

    int count = 0;
    int i;
    for(i=0;buff[i] != 0; i++){
        count += (buff[i] == ",");
    }
    printf("The number of commas: %d\n", count);



    char *tokptr = strtok(buff,",");
    char *csvArray[sl];

    i = 0;
    while(tokptr != NULL){
          csvArray[i++] = tokptr;
          tokptr = strtok(NULL, ",");
    }

    int j;
    for(j=0; j < i; j++){
        printf("%s\n", csvArray[j]);
    }

    return 0;
}

字符串

2w2cym1i

2w2cym1i1#

例如在这份声明中

count += (buff[i] == ",");

字符串
你正在比较char类型的对象buff[i]和字符串文字",",在比较表达式中,字符串文字","被隐式转换为const char *类型。
您需要使用字符文字','来比较字符和字符,如

count += (buff[i] == ',');


另一种方法是使用标准C函数strchr

for ( const char *p = buff; ( p = strchr( p, ',' ) ) != NULL; ++p )
{
    ++count;
}


请注意循环条件中有一个错字

for(i=0;i<buff[i] != 0; i++){


你得写

for(i=0; buff[i] != 0; i++){


而且似乎不是这个宣言

char *csvArray[sl];


你是说

char *csvArray[count + 1];

相关问题