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

标签 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);

最佳答案

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

这种类型的代码会给你要么

  1. 无限循环

  1. 非击球状态。

这是第 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/

相关文章:

c - 编写一个不使用算术运算符将两个数字相乘的程序

c - 重用 LodePNG 分配的内存

c - 如何提取字符串数组的最后3位并将其存储到C中的不同int数组中

PHP FOR迭代不迭代

batch-file - For 循环解析路径中带有空格的文件,命令提示符

c - 确定井字游戏中的最佳 Action

c - 为什么在 C 中写入二进制文件时 fwrite 会打印空字节?

c - strtoull 和 long long 算术

c# - $在字符串前是什么意思?

javascript - 如何将三维数组分割为三个 for in 循环?