gpt4 book ai didi

c - 为什么循环值永远不会大于0?

转载 作者:行者123 更新时间:2023-11-30 18:37:50 24 4
gpt4 key购买 nike

我正在尝试打印 26 个子进程,标记为 A 到 Z,间距设置为 int wid = 2*(i-1)对于级联类型的效果。但是,计算中 i 的值始终为 0,导致 0-1 为 -1,然后 2 * -1 的宽度始终为 -2。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char * argv[]){

pid_t pid;
int i;
int j;

for(i=0; i<26; i++){
pid=fork();
if(pid==0){
int l;
for(l=0; l<5; l++){
for(j=0; j<26; j++){
char value = j + 'A';
int wid = 2 *(i-1);
printf("wid: %d", wid);
printf("%*c\n", wid, value);
usleep(1000);
}
}
exit(EXIT_SUCCESS);
}
while(wait(NULL)>0);
exit(EXIT_SUCCESS);
}
}

我不明白如何构造 for 循环来打印间距,因此 i 从 0 开始,到 25 导致级联效果。

有什么建议吗?谢谢。

最佳答案

正如 MikeCAT 在评论中所说,第二个 exit() 调用存在问题。

另一个问题似乎是循环太多。

for(i=0; i<26; i++){
pid=fork();
if(pid==0){
int l;
for(l=0; l<5; l++){
for(j=0; j<26; j++){ // <-- Get rid of this line
char value = j + 'A'; // <-- Use i instead of j
int wid = 2 *(i-1);
printf("wid: %d", wid);
printf("%*c\n", wid, value);
usleep(1000);
} // <-- Also get rid of this line
}
exit(EXIT_SUCCESS); // <-- This is fine, exits the child process
}
while(wait(NULL)>0); // <-- Move with the line below
exit(EXIT_SUCCESS); // <-- Problem here, exits the parent process, preventing any looping
}

由于它位于主 for 循环内,因此它永远没有机会循环,因为它在第一次迭代结束时退出。将有问题的 exit() 移到其后的 } 下面,您的问题应该得到解决。

关于c - 为什么循环值永远不会大于0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35726297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com