gpt4 book ai didi

c - 从文本文件 (C) 读取时字符串长度发生变化

转载 作者:太空宇宙 更新时间:2023-11-04 08:48:40 26 4
gpt4 key购买 nike

我的问题是这样的:我制作了一个 char 数组,假设它的长度是 A,然后我将这个数组写入文件,然后从同一个文件中读取它,它的长度不再是 A,它更大..源代码:

char encrypted1[] = "abcdefghijklmnopqrstuvqwxyz";
int encrypted1_len;
char *encrypted;
int encrypted_len;
encrypted1_len = strlen((char*)encrypted1);

f_cypher = fopen(CYPHER_FILE, "w");
fprintf(f_cypher, "%s", encrypted1);
fclose(f_cypher);

stat(CYPHER_FILE, &st);
size = st.st_size;
encrypted = malloc(size * sizeof *encrypted);
f_cypher = fopen(CYPHER_FILE, "r");
len = fread(encrypted, 1, size, f_cypher);
encrypted1[len] = '\0';
fclose(f_cypher);

encrypted_len = strlen((char*) encrypted);
printf("%s", encrypted);

在这个例子中,长度是 27,然后是 40。

最佳答案

您没有为读回的字符串分配足够的空间。您的 encrypted1 有 26 个字符和一个\0 字符串结束标记,即 27。现在您将这 26 个字节写入文件(执行 ls -l - 检查 26),分配 26 个字节,并将 encrypted1[len] 设置为 '\0',这是您尚未分配的内存。从现在开始,任何奇怪的事情都可能发生。将 malloc 中的 size 更改为 (size+1) 看看会发生什么。

关于c - 从文本文件 (C) 读取时字符串长度发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20527825/

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