不能将ftell函数的返回值赋给char数组的大小,因为ftell函数返回的是long类型的值,而char数组的大小应该是一个整数值。
要解决这个问题,我们可以使用ftell函数获取文件大小,然后再动态分配一个合适大小的char数组来存储文件内容。
下面是一个示例代码:
#include
#include
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("File not found.\n");
return 1;
}
// 获取文件大小
fseek(file, 0, SEEK_END);
long fileSize = ftell(file);
fseek(file, 0, SEEK_SET);
// 动态分配char数组
char *fileContent = (char *) malloc(fileSize + 1); // +1 用于存储字符串结束符'\0'
if (fileContent == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
// 读取文件内容
fread(fileContent, 1, fileSize, file);
fileContent[fileSize] = '\0'; // 添加字符串结束符
printf("File content: %s\n", fileContent);
// 释放内存和关闭文件
free(fileContent);
fclose(file);
return 0;
}
在这个示例中,我们首先使用fopen函数打开一个名为"example.txt"的文件。然后,我们使用fseek函数将文件指针移动到文件末尾,使用ftell函数获取文件大小,再将文件指针移动回文件开头。
接下来,我们使用malloc函数动态分配一个大小为fileSize + 1的char数组,用于存储文件内容。然后,我们使用fread函数将文件内容读取到fileContent数组中,并在末尾添加字符串结束符'\0'。
最后,我们打印文件内容,释放内存并关闭文件。
请注意,在使用完动态分配的内存后,我们需要使用free函数释放内存,以防止内存泄漏。