打印字符数组元素

时间:2014-05-11 07:17:06

标签: c arrays

过去两个小时我一直挂在这上面,这真的让我很恼火。我正在使用标准C,尝试打印char数组元素。

以下是一个可行的片段(打印整个数组),

CreditCard validate_card(long long n) {

    CreditCard cc; // specify new credit card
    cc.n = n; // specify card num as passed
    cc.valid = false; // initialize as invalid
    cc.type = AEX; // initialize at american express

    bool valid;

    char s[20];
    sprintf( s, "%d", n ); // convert credit card number into char array
    printf("%s\n", s);
    return cc;
}

以下代码段不起作用,

CreditCard validate_card(long long n) {

    CreditCard cc; // specify new credit card
    cc.n = n; // specify card num as passed
    cc.valid = false; // initialize as invalid
    cc.type = AEX; // initialize at american express

    bool valid;

    char s[20];
    sprintf( s, "%d", n ); // convert credit card number into char array
    printf("%s\n", s[0]);
    return cc;
}

就此而言,如果有人也可以向我解释如何将char数组元素连接到char指针,我将不胜感激。

3 个答案:

答案 0 :(得分:12)

使用此行时。

printf("%s\n", s[0]);

编译器应该打印一些关于格式字符串%s和相应参数s[0]不匹配的警告。

s[0]的类型为char,而不是char*

你的意图是什么?

如果您只想打印一个字符,请使用:

printf("%c\n", s[0]);

如果要打印整个字符数组,请使用:

printf("%s\n", s);

答案 1 :(得分:2)

您需要替换以下行

printf("%s\n", s[0]);

printf("%c\n", s[0]);

打印1个字符。

要逐个打印所有字符,请使用循环。

答案 2 :(得分:1)

如果您只需要打印数组的第一个字符,则需要使用%c,例如

printf("%c\n", s[0]);

查看this MSDN reference