我正在学习 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/