【问题标题】:C access to first letter in struct [duplicate]C访问结构中的第一个字母[重复]
【发布时间】:2021-03-20 04:15:36
【问题描述】:

我想写“名称”的第一个字母,但我收到错误“访问冲突读取位置 0x0000004D” 我不知道我做错了什么?据我了解,start[0].name 是一个字符指针?

struct test {
    int PESEL;
    struct {
        char name[12];
        char name2[12];
        char lastname[12];
    };
};
test start[3] = { {6236231234, {"John", "Lewo", "Komors"}},
                  {5125124362, {"Ery", "Testo", "Mocny"}},
                  {7844323412, {"Alex", "Mozna", "Ciemny"}}
};
printf("%s", (start[0].name)[0]); // I want the answer to be J

【问题讨论】:

  • 使用%c 打印单个字符,使用%s 打印字符串。 start[0].name 是一个字符串,start[0].name[0] 是一个字符。
  • @RetiredNinja 谢谢这实际上解决了我的问题。
  • 附注:在此示例中,您必须使用char*,因为文本字符串不会像您预期的那样复制到char[12]
  • 这些数字可能太大,无法放入int 中,并且匿名结构是 GCC 扩展,因此如果您想要便携,请不要使用它们。打开更多警告。建议:-Wall -Wextra -pedantic -pedantic-errors

标签: c


【解决方案1】:

将您的打印语句更改为以下 -

printf("%c", start[0].name[0]);

输出将是J

问题出在格式说明符上,您想打印一个字符,因此适当的说明符将是%c 而不是代表字符串的%s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2014-07-06
    • 1970-01-01
    相关资源
    最近更新 更多