for循环不工作 - 外循环不迭代

时间:2014-12-05 06:28:15

标签: c string for-loop comparison-operators

我想让程序重复一个字符串并获得重叠(删除每次迭代中父字符串的第一个元素)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);

4 个答案:

答案 0 :(得分:1)

for (int k=0; k>length; k++) 

此类代码将为您提供

  1. 无限循环
    1. 非击球状况。
    2. 这里是第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++)