【发布时间】:2015-02-17 01:18:44
【问题描述】:
这个问题本身就很好解释了我有三个不同的 C 程序并尝试比较它们的效率我尝试通过让它们运行几次来改变它们的参数(与所用时间成正比)来测试它们的运行时间并写下它需要多长时间让每个程序针对特定参数运行(以便稍后我可以绘制结果)。
以下是我的代码
# include <stdio.h>
# include <stdlib.h>
# include <math.h>
# include <time.h>
int main(void){
int i;
struct timeval bni, bmi, bfi, bnf, bmf, bff;
FILE *in;
char filename1[30] = "shuff.dat";
int a1,a2,b1,b2,c1,c2;
char command[100];
in = fopen(filename1, "w");
//for(i = 0; i<=100000; i +=100){
for(i = 0; i<=10; i +=1){
if (snprintf(command, sizeof(command), "./barajas_n.x %d", i) < sizeof(command)){
a1 = gettimeofday(&bni , NULL);
system(command);
a2 = gettimeofday(&bnf , NULL);
}
if (snprintf(command, sizeof(command), "./barajas_m.x %d", i) < sizeof(command)){
b1 = gettimeofday(&bmi , NULL);
system(command);
b2 = gettimeofday(&bmf , NULL);
}
if (snprintf(command, sizeof(command), "./barajas_fy.x %d", i) < sizeof(command)){
c1 = gettimeofday(&bfi , NULL);
system(command);
c2 = gettimeofday(&bff , NULL);
}
fprintf(in, "%d %d %d %d \n", i, (a2-a1),(b2-b1),(c2-c1));
}
fclose(in);
}
我在终端窗口收到以下消息:
这意味着这个程序正在运行它的所有步骤,只是没有正确执行我想要计时的程序。
我已经像这样在终端中单独测试了所有三个程序
./barajas_*.x i
- 谁能告诉我为什么 system() 将其输入作为目录,并且,
- 如何告诉 system() 它停止将其作为目录并执行它?
编辑:在聊天室中长时间讨论后,问题正如 Jonathan Leffler 所说:“存在的实际命令名称与程序试图运行的命令名称不匹配。”
iharob 的贡献回答了实际问题,如果命令名称与程序正在运行的命令名称匹配,任何对他提供的 sn-p 感兴趣的人都应该工作。
【问题讨论】:
-
如果你解决了问题,不要修复问题中的代码,因为那样看起来你从来没有遇到过问题。我撤消了 - 如果我犯了错误,请告诉我。
-
@immibis 你确实犯了一个错误!正如我试图解释但不能因为显然有更多声誉的人编辑了我的编辑并且我无法完成我的编辑,更改语法是 system() 的参数符合其要求并不能解决问题,但让程序进入 for lop 并为所有三个文件显示相同的错误 i 次。
-
@immibis 您能撤消您的编辑,以便我更新问题正文吗?
-
我看到有人提供了答案,您更新了问题以合并答案。但是,如果您认为我错了,请继续并恢复我的回复 - 我只是另一个 Stack Overflow 用户,我没有获得超能力或任何东西,因为我拥有很多声誉(除了编辑帖子而不需要审查我的编辑,并且能够看到已删除的帖子)。
-
在聊天中经过一番讨论并查看了运行程序的实际结果后,我们发现问题是一个错字——实际存在的命令名称与程序的命令名称不匹配正在尝试运行。