【问题标题】:print only certain positions in array in C仅打印C中数组中的某些位置
【发布时间】:2013-12-16 10:30:33
【问题描述】:

我已经在谷歌上搜索了几天,试图在 C 中找到正确的语法。以乱序排列的方式打印数组。我是 C 新手,但很了解 php、Java。我是否使用了错误的逻辑方法?

我想打印的是

     "Here is your order, 2B 3C 1A"

我尝试过使用以下类型的代码,但得到,

     @[2] (null)[3] (null)[1]
     segmentation fault

     char *aa="1A";
     char *bb="2B";
     char *cc="3C";
     char * zz[]={aa,bb,cc};
     g_print("Here is your order, %s[2] %s[3] %s[1]",zz);

谢谢 艺术

【问题讨论】:

  • for(i=0;i<3;i++) printf("%s ", zz[i]);,换你喜欢的顺序。
  • ...并阅读 printf 的文档。

标签: c arrays printf


【解决方案1】:

你必须打印数组中的每个字符串:

g_print("Here is your order, %s %s %s",zz[1], zz[2], zz[0]);

注意索引!

如果在运行时设置项数,则必须使用循环:

g_print("Here is your order,");
for (size_t i = 0; i < some_upper_limit; ++i)
    g_print(" %s", zz[i]);

还请注意,您声明了错误的 aabbcc 变量。您应该将它们声明为数组或指向常量字符串的指针。那是因为字符串字面量是常量。

所以:

char aa[]="1A";
char bb[]="2B";
char cc[]="3C";

const char *aa="1A";
const char *bb="2B";
const char *cc="3C";

【讨论】:

  • 感谢@Joachim Pileborg 的两个替代品,现在它是有道理的。谢谢艺术
【解决方案2】:

使用:

 g_print("Here is your order, %s %s %s",zz[1], zz[2], zz[0]);

数组索引从 0 开始。字符串的内容不会针对数组索引进行评估。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 2014-12-08
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2016-06-23
    相关资源
    最近更新 更多