我的问题是这样的:
我创建一个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个字符和一个字符串结束标记,共27个。现在将这26个字节写入文件(执行ls-l-check the 26),分配26个字节,并将encrypted1[len]设置为'\0',这是尚未分配的内存。从现在起任何奇怪的事情都有可能发生。将malloc中的size
更改为(size+1)
并查看发生了什么。
关于c - 从文本文件(C)读取时,字符串长度发生变化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20527825/