我想制作一个程序来重复一个字符串并得到一个重叠的(在每次迭代中删除父字符串的第一个元素)23 个元素的子字符串。我认为外循环不起作用。请帮助我了解发生了什么。
这是我使用过的代码的相关部分。
char *copy = (char*)malloc(sizeof(char)*(length+1));
strcpy(copy, seq);
printf("%s\n %d", copy, strlen(copy));
char temp[26]= "";
int templen=0;
for (int k=0; k>length; k++)
{
for (int i=0; i< 23; i++)
{
templen = strlen(temp);
temp[templen]=copy[i];
templen++;
}
temp[templen+1] = '\0';
printf("%s\n", temp);
temp[0]='\0';
copy++;
printf("%s\n %d", copy, strlen(copy));
}
free(seq);
最佳答案
for (int k=0; k>length; k++)
这种类型的代码会给你要么
- 无限循环
或
- 非击球状态。
这是第 2 点。考虑 length
值 >= 0,条件检查 for
循环将变为失败,因此它不会执行循环体。
对于情况 1,如果你初始化 k
有一些值(value) > length
的值(value),你将面临无限循环,因为 k>length
永远不会变成假。
您应该将条件检查更改为 for (int k=0; k < length; k++)
另外,你应该移动templen = strlen(temp);
外面里面for
循环,或者,您可以省略该语句本身并初始化 templen
在内部 for
之前归零环形。你已经有 templen++;
在您的代码中。
关于c - for 循环不工作 - 外循环不迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27310089/