我编写了一段代码来读取文件。读取默认文件或其他文件并将内容文件存储在字符串中。我不知道我哪里错了!当我运行它时,有时没问题,但有时会出现 Core Dump 错误!
这是我的代码:
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#define BUFFER_SIZE 1024
#define EXAMPLE_FILE "programing_languages.example"
#define EXAMPLE_FILE_SIZE strlen(EXAMPLE_FILE)+1
int read_file(char *buffer, char *file_name)
{
FILE *file;
file = fopen(file_name, "r");
if (file == NULL)
{
printf("Warning!!!");
return 1;
}
fread(buffer, sizeof(char), BUFFER_SIZE, file);
fclose(file);
return 0;
}
int main(int argc, char *argv[])
{
int opt;
int file_name_customized = 0;
char *file_name;
while ((opt = getopt(argc, argv, "f:")) != -1) {
switch (opt) {
case 'f':
snprintf(file_name, strlen(argv[2])+1, "%s", argv[2]);
file_name_customized = 1;
break;
default:
snprintf(file_name, EXAMPLE_FILE_SIZE, EXAMPLE_FILE);
}
}
if (!file_name_customized)
{
snprintf(file_name, EXAMPLE_FILE_SIZE, EXAMPLE_FILE);
}
char buffer[BUFFER_SIZE] = {"\0"};
if (read_file(buffer, EXAMPLE_FILE) == 1)
{
printf("Got Error To Open %s File!\n", file_name);
return errno;
}
printf("%s\n", buffer);
}
我想读取一个文件并将其保存到一个字符串中。 (C语言)
如何读取文件并将内容保存在字符串中?
fread()
读取整个文件,并具有良好大小的缓冲区,例如 4K 并对返回的长度求和。fread()
将整个文件重新读入分配的缓冲区。 Nate 返回的长度。