c - while循环在for循环之后不执行

标签 c

我正在学习 C 编程方法,我有一个关于结尾循环的问题。 我正在使用linux debian来编译。

这是代码。

#include <stdio.h>

int main ()
{
    char s1[] = "abcdef";
    char s2[] = "aaaaaa";   
    int i, j;

    printf("\ndebut:%s\n", s1);

    for (i = j = 0; s1[i] != '\0'; ++i, ++j){
        if (s1[i] == s2[j]){
            printf("before %c\n", s1[i]);
            s1[i] = '\0';
        }   
        else if (s1[i] != s2[j]){
            s1[i] = s1[i];
            printf("after copy %c\n", s1[i]);
        }
    }

    printf("\nEnd of for loop write final result\n.");

    i = j = 0;

    while (s1[i] != '\0'){
        printf("final is :%c ", s1[i]);
        ++i;
    }

    return 0;
}

这段代码假设在我的示例中删除开头字母“a”处的一个字母,然后 while 循环将遍历每个位置来打印结果。

看起来第一部分正在工作,但程序从未执行 while 循环。

有什么想法吗?

谢谢

最佳答案

你执行这个

s1[i] = '\0';

当 i = 0 时,所以 while 条件

while (s1[i] != '\0') { ...

为 false,并且您永远不会执行循环。

关于c - while循环在for循环之后不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21369319/

相关文章:

c - 为什么这个程序会这样运行?

c++ - 返回多重映射的内容

c++ - 在 Visual Studio 2010 中编译为 C 代码

c - 无法通过读取文件来填充结构数组

python - 为什么这种 PyArray_SimpleNewFromData 段错误的简单用法?

c - 理解 C 中的 strlen 函数

c - C代码的效率

c - 应用程序退出后信号量保持打开状态

c - 选择小于架构大小的变量是一个有效的选择吗?

c - I2C & SPI 开机自检