好的输出应该是这样的:
./a 3 4 8 2
3
4
8
2
这是我到目前为止所做的,但我迷路了,只能打印第一个整数(我们必须使用GetInt,它在字符串中获取指定的整数):
int main (int argc, char*argv []){
int v;
int i;
i = 1;
v = GetInt(argc, argv, i + 1);
if(argc >= 1){
printf("%d\n", GetInt(argc, argv, i));
}
return 0;
}
答案 0 :(得分:3)
看起来你需要使用for循环来依次获取每个值。
答案 1 :(得分:2)
如果没有实际看到你的GetInt实现,就像这样(假设C90):
#include <stdio.h>
int GetInt( int argc, char* argv[], int i ) {
/*
* you may want to use sscanf, strtol or other functions,
* but you haven't specified
*/
return atoi( argv[i] );
}
int main ( int argc, char* argv[] ) {
int i;
for ( i = 1; i < argc; ++i ) {
printf( "%d\n", GetInt( argc, argv, i ) );
}
return 0;
}
返回:
$ ./a.out 3 4 8 2
3
4
8
2
错误检查省略等。这是练习你如何处理非十进制参数的练习。
答案 2 :(得分:1)
请注意,为什么 要使用GetInt()
?它是完全多余的,不是标准库的一部分,除非你自己(或在课堂上)写它,我无法想象曾经使用它。这就是我要做的事情:
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for(i = 1; i < argc; i++)
{
printf("%s\n", argv[i]);
}
return 0;
}
我知道它不使用GetInt()
,但它更短,你可能不应该使用GetInt()
,因为它有点无用。此外,还有一个atoi()
函数,如果你不想使用它,因为它已经过时了strtol()
函数,你可以重新编写为int
,如果必须的话。
我不是在哄骗你或任何东西,我只是想知道为什么你被要求使用这个多余的非标准功能。
答案 3 :(得分:0)
在循环中使用printf()。 argc是argv []中以空格分隔的参数的数量,在上例中,argc = 5.