gpt4 book ai didi

Char 数据类型在两个字节的情况下保持\n

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

我遇到了一个问题,试图创建一些函数以使 C 中的 FileIO 更容易,其中\n 在计算机上存储为两个字节,但保存在单个字符中。这会导致加载的文件比实际大小稍短,最后会产生一些额外的垃圾。我使用字符作为字节,因为它是唯一保存单个字节的数据类型。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

long getFileSize(char fileName[]) {
FILE* f;
long size;
f = fopen(fileName, "r");
fseek(f, 0L, SEEK_END);
size = ftell(f);
return size;
}

char* readFile(char fileName[]) {
FILE* f;
char* data;
long size;
f = fopen(fileName, "r");
size = getFileSize(fileName);
data = malloc(size);
fread(data, 1, size, f);
fclose(f);
return data;
}

char* writeFile(char fileName[], char* data, long length) {
FILE* f;
f = fopen(fileName, "w");
fwrite(data, 1, length, f);
fclose(f);
return data;
}

int main(void) {
char* data = readFile("test.txt");
long size = getFileSize("test.txt");
int i;
printf("%li\n", size);
for(i = 0; i < size; i++) {
printf("%c", *(data + i));
}
printf("\n");
writeFile("test.txt", data, size);
free(data);
return 0;
}

最佳答案

问题是我使用了“w”和“r”而不是“wb”和“rb”,正如@chux所指出的

fopen(fileName, "r"); --> fopen(fileName, "rb");

哎呀。

关于Char 数据类型在两个字节的情况下保持\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46701415/

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