【问题标题】:Creating columns in C language [duplicate]用 C 语言创建列 [重复]
【发布时间】:2016-02-27 12:43:49
【问题描述】:

我的程序中有这些行:

printf("%-29s\n",("%s, Capital", CO));
printf("%-29s\n",("%s, Drawing",CO));

当我运行程序时,它只显示 %s 等效项 (CO) 而不是 "%s, Drawing"

请帮忙?

【问题讨论】:

  • 你想要的输出是什么?

标签: c dev-c++


【解决方案1】:

你使用了逗号,行为正常。

带有逗号运算符A, B 的表达式表示首先计算A,忽略其结果,然后计算B,逗号运算符的结果将是它的值。

如果你想显示“%s, Drawing”,打印出来。

printf("%-29s\n","%s, Drawing");

【讨论】:

    【解决方案2】:

    正如 MikeCAT 已经说过的,您使用了逗号运算符。如果你想左对齐复合字符串,你可以先用snprintf打印到一个临时缓冲区来实现它:

        char tmp[30];
    
        snprintf(tmp, sizeof(tmp), "%s, Capital", CO);
        printf("|%-29s|", tmp);
    
        snprintf(tmp, sizeof(tmp), "%s, Drawing", CO);
        printf("|%-29s|", tmp);
    

    当然,考虑到您直接在字符串之后打印换行符(因此证明有点毫无意义),您还不如直接打印所需的格式:

        printf("%s, Capital\n", CO);
        printf("%s, Drawing\n",CO);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-09
      • 2010-10-22
      • 2019-06-03
      • 1970-01-01
      • 2018-03-10
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多