【发布时间】:2021-09-06 14:52:28
【问题描述】:
我想编写一个简单的 shell 脚本来为 C 程序自动运行 5 个测试用例,该 C 程序按升序打印输入的 3 个整数。
我的 shell 脚本如下所示:
./a.out << 15 25 97
./a.out < 73 36 12
./a.out < 43 15 99
./a.out < 100 100 100
./a.out < 37 150 37
显然,这是错误的,因为我一直在玩弄语法并尝试不同的方法来查看哪些方法有效,但我希望很清楚我在这里尝试做什么——只需使用 3 个不同的整数输入运行程序时间。
我尝试并使用的一种方法是将每个测试用例放在一个文本文件中,但如果我想每次都更改输入,这样做似乎有点麻烦。正在寻找更简单简洁的解决方案。
C程序的输入读sn-p为:
int main() {
int m, n, p;
//Read m, n, p
printf("Give values of m, n and p = ");
scanf("%d%d%d",&m,&n, &p);
然后使用 m、n 和 p 的值进行计算。
【问题讨论】:
-
试试
./a.out 545 -
请提供您的 C 程序的minimal reproducible example,以便我们了解它所期望的获取信息的方法。
-
附带说明:系统地选择您的测试用例,而不是随意地选择测试用例,并且容易分辨是非。测试
15 25 97是否提供1 2 3没有的任何信息?您的代码是否取决于数字的大小? -
另一个注意事项:C 和 C++ 是非常不同的语言。请不要同时标记两者,除非您特别询问它们的区别。
-
@imtryin123 :您只能将字符串作为参数传递给新进程,但 C 有一个标准函数
atoi,您可以在其中将字符串转换为整数。但是,您忘记向main函数声明参数。这是讨论here