gpt4 book ai didi

char 数组末尾包含垃圾

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:05 24 4
gpt4 key购买 nike

所以,我用C写了下面的函数:

void splitNameAndDate(char *p, char *n, char *d) {
int d_index = 0, n_index = 0;
for (int i = 0; i < strlen(p); i++) {
if(p[i] >= '0' && p[i] <= '9') {
d[date_index++] = p[i];
} else {
n[name_index++] = p[i];
}
}
}

此函数获取一个数组(代表一个人),如下所示:adam1502(姓名和日期)并将其拆分为两个数组 - 姓名和日期。我像这样初始化数组:

char date[5],name[50],person[50];

例如,如果 p 数组有 Michelle1001,那么 n 数组,出于某种原因,有 Michelle\023。不明白为什么它把 \023 放在最后。不过,其他测试工作正常。

P.S 我使用 Clion 的调试器来查看数组包含的内容。

** 编辑 - 我可以在最后使用以下代码吗?

date[date_index] = '\0';
name[name_index] = '\0';

最佳答案

看起来您遇到了不确定的值。

像这样的局部作用域定义

  char date[5],name[50],person[50];

保留数组的所有成员未初始化,因此值是不确定的。

稍后,您只需将相关值复制到某个索引(减去空终止符),其余值仍处于不确定状态。因此,您可以在那里看到一些任意值。

关于char 数组末尾包含垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50764914/

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