将字符串数组组件与字符进行比较

Compare a string array component with a character

我有这个功能:int foo(char *string, int x, int y) 示例输入为:-.-..-...-. 程序使用定界符 - 对字符串进行标记化。然后它计算令牌中的 . 。问题是 db 变量没有改变。计数后 db 必须高于 x 且低于 y。所以-.-..-...- 2 3,解必须是2.

    char *token;
    int length;
    int i;
    int db=0;
    int igaz=0;
    int j=1;

    token = strtok(string, "-");
    length = strlen(token);

    while(token != NULL)
    {
        length = strlen(token);

        for(i=0; i<length; i++);
        {
            if(token[i] == '.')
            //if(strcmp(token[i],'.')==0)
            {
                db++;
            }
        }

        if(db >= x && db <= y)
        {
            igaz++;
        }
        db=0;

        token = strtok(NULL, "-");
        j++;

    }
    return igaz;

您的代码中存在多个问题。 1. 带分号的for循环。

for(i=0; i<length; i++);

这只会使线程循环。但是不会执行for循环体。

  1. strlen() 将 return 字符串长度不包括末尾的 '\0'。所以你的for循环应该是从0到长度如下。

for(i=0; i<=length; i++);

  1. For 循环是不必要的,因为字符串只有 '-' 和 '.'

这样就可以了。

int foo(char *string, int x, int y)
{
    char *token;
    int igaz =0;
    int db   = 0;

    token = strtok(string, "-");

    while(token != NULL)
    {
       db = strlen(token);


       if(db >= x && db <= y)
       {
           igaz++;
       }

       token = strtok(NULL, "-");

    }
    return igaz;

}