我想让程序重复一个字符串并获得重叠(删除每次迭代中父字符串的第一个元素)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);
答案 0 :(得分:1)
for (int k=0; k>length; k++)
此类代码将为您提供
或
这里是第2点。考虑length
的值为&gt; = 0,for
循环中的条件检查将变为失败,因此它不会执行循环体。
对于案例1,如果您使用某个值初始化k
&gt; length
的那个,你将面临无限循环,因为k>length
永远不会变为假。
您应该将条件检查更改为for (int k=0; k < length; k++)
此外,您应该将templen = strlen(temp);
移到内部for
循环之外,或者,您可以省略该语句本身并在内部templen
循环之前将for
初始化为零。您的代码中已有templen++;
。
答案 1 :(得分:1)
如果for
循环,你可能错误了条件语句。您已将条件设为k>length
。
由于条件始终为false,因此循环不会迭代。将其更改为for (int k=0; k<length; k++);
。
答案 2 :(得分:0)
您应该将外部循环更改为:
for (int k=0; k<length; k++)
你有错误的方法:
for (int k=0; k>length; k++)
答案 3 :(得分:0)
试试这个..而不是
for (int k=0; k>length; k++)
应该是
for (int k=0; k<length; k++)