我一直在谷歌搜索几天,试图在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);
感谢 领域
答案 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]);
另请注意,您声明aa
,bb
和cc
变量错误。您应该将它们声明为数组,或者作为指向常量字符串的指针。那是因为字符串文字是不变的。
所以:
char aa[]="1A";
char bb[]="2B";
char cc[]="3C";
或
const char *aa="1A";
const char *bb="2B";
const char *cc="3C";