【发布时间】:2015-04-01 14:32:22
【问题描述】:
我在下面有一个名为“prime.c”的程序:
#include "stdio.h"
#include "stdlib.h"
#include <unistd.h>
int isPrime(int number);
void Morph(char *number);
int main(int argc, char *argv[])
{
int i;
int number;
if (argc < 2) {
printf("Returning 2");
return(2);
}
else number = atoi(argv[1]);
if (isPrime(number)) {
exit(1);
}
exit(0);
}
/*
Purpose: check if the input number is a prime number
input:
number - the number to be checked
return:
0 - if the number is not a prime number
1 - if the number is a prime number
*/
int isPrime(int number)
{
int i;
for(i = 2; i*i < number; i++) {
usleep(100);
if (number % i == 0) {
printf("%d is not a prime number!",number);
return(0);
}
}
printf("%d is a prime number!",number);
return(1);
}
void Morph(char *number)
{
execvp(isPrime.exe,number);
}
它接受一个数字并检查它是否是质数。我们将创建一个名为“isPrime.exe”的可执行文件,我使用“gcc -o isPrime.exe prime.c -lm”完成了它,一切都运行良好。下一步是我卡住的地方,我们要创建一个函数 Morph(char *number),它接受一个字符串作为数字,并使用 execv 或 execvp 将程序变形为 isPrime 程序。我已经开始创建 morph 函数但是我无法让它工作,感谢任何帮助!
【问题讨论】:
-
从阅读reference of the functions 开始可能是个好主意。
-
您缺少文件路径周围的双引号。
-
我已经阅读了它们,但我仍然遇到问题
-
不确定是否是同一个问题,但上次我使用 exec 它没有包含文件名参数,所以我不得不将所有 argv[1] 更改为 argh[0]
-
如果输入的数字是4,那么这个算法'isPrime()'不能提供正确的答案
标签: c executable