【问题标题】:how to print a string vertically in c?如何在c中垂直打印字符串?
【发布时间】:2010-10-09 06:08:12
【问题描述】:

好的,输出应该是这样的:

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

【问题讨论】:

  • 尝试使用 while 循环并在存在的参数上增加计数器。
  • 对于无限的参数,我该怎么做?
  • @kaity:对你来说幸运的是,计算机不能处理无限数量的参数——它们本质上是有限的。您可以为不确定(但仍然有限)数量的参数执行 'while (*argv != 0)'。

标签: c string printf


【解决方案1】:

看起来你需要使用for循环来依次获取每个值。

【讨论】:

    【解决方案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
    

    省略错误检查等。这是一个练习,让您弄清楚如何处理非小数参数。

    【讨论】:

    • 循环的更惯用用法:for (i = 1; i
    • 请不要发布家庭作业的代码。只需指向正确的方向,例如建议使用循环。
    • @qrdl : 一个问题是否是家庭作业无关紧要 - 我们仍然应该以最完整的方式回答它。
    【解决方案3】:

    请注意,您为什么使用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

    我不是在引用你或任何东西,我只是想知道为什么要求你使用这个多余的、非标准的功能。

    【讨论】:

      【解决方案4】:

      在循环中使用 printf()。 argc 是 argv[] 中以空格分隔的参数的数量,在上面的示例中,argc = 5。

      【讨论】:

      • argc 实际上是 5(4 args + 1 为程序名称)。 :)
      猜你喜欢
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      相关资源
      最近更新 更多