打印字符数组元素

12

我已经在这个问题上卡了两个小时了,它真的开始让我感到烦躁。我正在使用标准C语言,尝试打印字符数组的元素。

以下是有效的片段(打印整个数组):

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

说到这里,如果有人能够向我解释如何将字符数组元素连接到字符指针中,我会非常感激。

3个回答

19

当您使用这条线时。

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

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

你的意图是什么?

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

printf("%c\n", s[0]);
如果你想打印整个字符数组,请使用:

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

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

在Ubuntu上使用本地编译器时,它并没有抛出任何错误或异常,所以我很难调试这个问题。我猜可能是格式问题,但很快就忽略了并开始寻找其他解决方案。谢谢你的见解。 - user1117742456
你可以使用 -Wall 选项来查看所有警告。 - Mohit Jain

2
您需要替换以下行:
printf("%s\n", s[0]);

使用

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

打印单个字符。

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


1
如果您需要仅打印数组的第一个字符,您需要使用%c,例如:
printf("%c\n", s[0]);

请看这个 MSDN参考资料

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接