Gcc编译器消息:passing argument 1 of ‘srand’ makes integer from pointer without a cast [-Wint-conversion]
too many arguments for format [-Wformat-extra-args]
我的代码:
#include<stdlib.h>
#include<unistd.h>
#include<stdio.h>
#include<sys/wait.h>
void main(int argc,int* argv[])
{
srand(argv[1]);
srand(argv[2]);
printf("I am orginal MY PID %d and MY PPID %d \n",getpid(),getppid());
int pid,x,s,x1;
pid=fork();
if (pid!=0)//parent
{
printf("I am parnet and My PID %d and My PPID %d /n",getpid(),getppid());
for(int i=0 ;i<3;i++){
s=rand();
x=s%5;
sleep(x);
printf("parent sleep\n",x);
}
printf("the parent terminated with PID %d and PPID %d \n",getpid(),getppid());
}
else{//child
printf("i'm a child with PID %d and PPID %d \n" ,getpid(),getppid());
for(int i=0 ; i<3;i++){
sleep(x1);
s=rand();
x1=s%5;
}
printf("child sleep \n",x1);
printf("the child terminated with PID %d and PPID %d \n",getpid(),getppid());
}
}
1条答案
按热度按时间niwlg2el1#
对于初学者,函数
main
应声明为代替
在任何情况下,表达式
argv[1]
和argv[2]
都有一个指针类型。无效。函数声明如下
也就是说,它需要整数而不是指针。
在使用
argv[1]
和argv[2]
之前,您需要检查argc
的值。并且连续两次调用该函数没有意义。
在
printf
的这些调用中您指定的冗余参数
x
和x1
在格式字符串中没有对应的转换说明符。此外,您还使用了未初始化的变量,例如
变量
x1
未初始化。