让我以我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");

这是有意义的,因为时间戳中有数字值我似乎找不到任何关于如何将数字和字符同时存储在字符串中的信息。

最佳答案

我看到的第一件事是,2007-03-01T13:00:00Z和2d97f036a1T13G21Jm0Z需要char[21]来允许附加的终止字符。
不确定为什么你会在Evest1.Times上获得失败,因为它应该溢出到下一个字段,但是尝试修复字段大小并重新测试。
仅供参考:出于安全考虑,我基本上放弃了strcpy(),改为使用strncpy()在偏执状态下,这看起来像:

strncpy( target, source, sizeof target );
target[sizeof target - 1]] = '\0';   /* assure \0 terminator */

09-19 00:56