gpt4 book ai didi

C - 结构体字符串元素被连接

转载 作者:行者123 更新时间:2023-11-30 18:23:30 27 4
gpt4 key购买 nike

我的结构中有两个字符串元素

struct mystruct{
char mydate[10];
char mytime[5];
};

它们将分别存储“XX:YY”和“XX-YY-ZZZZ”类型的字符串。

但是当我为这些变量分配一些值时

struct mystruct *mystruct = (struct mystruct*)malloc(sizeof(struct mystruct));
strcpy(mystruct->mydate, "01-01-1970");
strcpy(mystruct->mytime, "00:01");

mydate 变量正在打印:

01-01-197000:01

我错过了什么吗?你能帮助我吗?谢谢安舞!

  • 已编辑并提供更多信息
  • 即使将尺寸增加一也不起作用

最佳答案

您的行为未定义,因为 mydate 中没有足够的空间来包含格式为“MM-DD-YYYY”的字符串 - 不要忘记末尾的隐式空终止符。

您特别观察到的是,缺少空终止符意味着输出函数(putsprintf 或您正在使用的任何函数)继续读取字符串结束后的字符。在您的情况下, mydatemytime 之间恰好没有任何填充,因此 mytime 中的值似乎是字符串也是如此。

请记住,由于数组在传递给函数时会衰减为指针,因此具有数组参数的函数无法知道何时完成读取数组;为此,空终止符充当哨兵值。

解决方案:增加 mydatemytime 的大小以容纳空终止符。

关于C - 结构体字符串元素被连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55150544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com