【问题标题】:Printing Char Array Element打印字符数组元素
【发布时间】:2014-05-11 07:17:05
【问题描述】:

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

以下是一个有效的sn-p(打印整个数组),

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

下面的sn-p不行,

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 指针,我将不胜感激。

【问题讨论】:

    标签: c arrays


    【解决方案1】:

    当你使用这条线时。

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

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

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

    你的目的是什么?

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

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

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

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

    【讨论】:

    • 在 Ubuntu 上使用本机编译器,它没有给我任何错误或异常,所以我很难调试这个问题。我猜这可能是格式,但很快就被忽略了,并开始为另一种解决方案蹂躏。感谢您的洞察力。
    • 您可以使用-Wall 选项查看所有警告。
    【解决方案2】:

    你需要替换下面的行

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

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

    打印 1 个字符。

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

    【讨论】:

      【解决方案3】:

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

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

      看看this MSDN reference

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多