char数组中的数字和字母c

时间:2016-09-08 15:37:18

标签: c string struct

让我作为前言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");

由于时间戳中的数字值,这是有道理的。我似乎无法找到关于如何在字符串中存储数字和字符的任何内容。

1 个答案:

答案 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 */