我有这个功能: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;
答案 0 :(得分:1)
您的代码中存在多个问题。 1.对于带有半结肠的循环。
for(i=0; i<length; i++);
这将使线程循环。但它不会执行for循环体。
for(i=0; i<=length; i++);
这样就可以了。
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;
}