gpt4 book ai didi

C:解释 gcc 输出和数字

转载 作者:行者123 更新时间:2023-11-30 20:18:40 27 4
gpt4 key购买 nike

我编写了一个 C 程序,当在 Windows 上的 Linux VM 上运行 gcc 时,它会产生以下输出:

错误信息: /image/P91ZT.jpg

但是,“{和}”的数量应该是正确的,所以我不明白为什么编译器会提示这一点。另外,我在声明后使用 k 和 random ,如何摆脱警告?

感谢您的帮助!

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
# include <getopt.h>
#include <stdbool.h>

int main(int argc, char ** argv)
{
int opt=0;
//Parameter:
//boolean random:
// typdef enum {false, true} bool;
bool random=false;
//Zahl zu der gezaehlt werden soll: k
int k=10;
//Zahl der Kindprozesse, die erzeugt werden sollen: N
int n=1;
//Parsieren der Kommandozeilenparameter:
while ((opt = getopt(argc, argv, "nt:")) != -1)
{
switch (opt)
{
case 'k':
k = atoi(optarg);
break;
case 'n':
n = atoi(optarg);
break;
case 'r':
random=true;
default: /* '?' */
printf("%s", "No valid parameters.");
exit(EXIT_FAILURE);
}
}
//Erzeugen von n Kindprozessen:
int zaehlerprozesse=0;
while(zaehlerprozesse<n)
{
fork();
zaehlerprozesse++;
}
if(//TODO list)
{
//Kindprozess liegt vor
int zaehler=1;
char ausgabe[256]= {0};
int zaehlen=k;
//Umgehen mit random:
if(random==true)
{
srand((unsigned) time(&t));
int help=rand()%(k*0.5);
//0 oder 1 um zu bestimmen, ob addieren oder substrahieren:
int luck=rand()%1;
if(luck==0)
{
zaehlen=zaehlen-help;
}
else
{
zaehlen=zaehlen+help;
}
}
while(zaehler<=zaehlen)
{
int pid=getpid();
int ppid=getppid();
sprintf(ausgabe, "%d %c %d %c %d\n", pid,' ', ppid,' ',zaehler);
write(STDOUT_FILENO, ausgabe, strlen(ausgabe));
sleep(1);
zaehler++;
}
exit((getpid()+k)%100);
}
else
{
//Elternprozess liegt vor
time_t curtime;
time(&curtime);
printf("Start: %s", ctime(&curtime));

}
int exitcode=0;
//TODO bestimmen wie man auf alle aus der Liste wartet:
wait(&exitcode);
//exitcode to String casten:
char str[24];
sprintf(str, "Exit-Code: %d\n",WEXITSTATUS(exitcode));
//Ausgabe des Exitcodes:
write(STDOUT_FILENO, str, strlen(str));
time_t curtime;
time(&curtime);
printf("Ende: %s\n", ctime(&curtime));
return 0;
}

最佳答案

我可以在代码中看到三个问题。

  • if(//TODO list)因为评论标记//右括号)对于if缺失,且没有条件。
  • srand((unsigned) time(&t)); t此处未声明。
  • int help=rand()%(k*0.5); 。您正在使用double ( k*0.5 ) 作为 % 的操作数

关于C:解释 gcc 输出和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53426202/

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