Я пытаюсь написать программу c, которая получает два числа с плавающей точкой от пользователя, а затем вызывает другую программу с помощью команды execv(). Но я не могу этого сделать, из-за преобразования float в char или я не знаю почему. Проблема заключается в том, что команда execv() не работает; выход должен быть такимКоманда sprintf() не работает
Введите первый Num: 5
Введите второй Номер: 7
5,000000 + 7,000000 = 12,000000
parentPID: 9745 childPID: 9746 теперь работает
но это походит что теперь
Введите первый Num: 5
Введите второй Номер: 7
parentPID: 9753 childPID: 9754 теперь работает
моя первая с программой sum.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char **argv) {
if(argc!=3)
printf("error...\n");
double a=atof(argv[1]);
double b=atof(argv[2]);
printf("%lf + %lf = %lf \n",a,b,a+b);
return 0;
}
и вторая программа calculate.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
float x,y;
pid_t pid;
printf("Enter first num: ");
scanf("%f",&x);
printf("Enter second num: ");
scanf("%f",&y);
if((pid=fork())== -1)
{
printf("can not fork..\n");
exit(1);
}
if(pid==0) //child
{
pid=getpid();
char *temp[] = {NULL,NULL,NULL,NULL};
temp[0]="sum";
sprintf(*temp[1],"%f",x); //here I want to convert float number to char but it doesn't work
sprintf(*temp[2],"%f",y);
execv("sum",temp);
}
else
{
wait(NULL);
printf("parentPID: %d childPID: %d works now.\n", getpid(), pid);
}
return 0;
}
Что именно «я не могу сделать» означает? В чем проблема? Просьба уточнить. –