如何在c中垂直打印字符串?

时间:2009-02-23 04:02:57

标签: c string printf

好的输出应该是这样的:

./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;  
}  

4 个答案:

答案 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.