【发布时间】: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