在C中只打印数组中的某些位置

时间:2013-12-16 10:30:34

标签: c arrays printf

我一直在谷歌搜索几天,试图在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);

感谢 领域

2 个答案:

答案 0 :(得分:2)

使用:

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

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

答案 1 :(得分:2)

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

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";