让我作为前言c
背景与沙漠中的水坑一样深。
我正在尝试创建一个具有以下格式的struct
:
struct Event {
char time[20];
char name[20];
char userId[20];
};
然后分配如下的值:
int main(int argc, const char * argv[]) {
struct Event event1;
strcpy( event1.time, "2007-03-01T13:00:00Z");
strcpy( event1.name, "VS");
strcpy( event1.userId, "2d97f036a1T13G21Jm0Z");
printf("%s", event1.time);
return 0;
}
但是,我在这一行得到SIGABRT
:
strcpy( event1.time, "2007-03-01T13:00:00Z");
由于时间戳中的数字值,这是有道理的。我似乎无法找到关于如何在字符串中存储数字和字符的任何内容。
答案 0 :(得分:1)
我看到的第一件事是2007-03-01T13:00:00Z和2d97f036a1T13G21Jm0Z需要char [21]以允许额外的\ 0终止字符。
不确定为什么你在event1.time上遇到失败,因为它应该溢出到下一个字段,但是尝试修复字段大小并重新测试。
仅供参考:出于安全考虑,我主要放弃strcpy()并使用strncpy()代替。在偏执模式中,这看起来像:
strncpy( target, source, sizeof target );
target[sizeof target - 1]] = '\0'; /* assure \0 terminator */