将字符串数组组件与字符进行比较
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循环体。
- strlen() 将 return 字符串长度不包括末尾的 '\0'。所以你的for循环应该是从0到长度如下。
for(i=0; i<=length; i++);
- 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;
}
我有这个功能: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循环体。
- strlen() 将 return 字符串长度不包括末尾的 '\0'。所以你的for循环应该是从0到长度如下。
for(i=0; i<=length; i++);
- 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;
}