在C语言中,读取文本文件并输出其内容可以通过标准库函数实现。以下是一个简单的示例程序,演示如何打开一个文本文件,读取其内容并输出到控制台。
示例代码
#include
#include
int main() {
FILE *file;
char filename[100];
char ch;
// 提示用户输入文件名
printf("请输入要打开的文件名: ");
scanf("%s", filename);
// 打开文件
file = fopen(filename, "r");
if (file == NULL) {
perror("无法打开文件");
return EXIT_FAILURE;
}
// 读取文件内容并输出
printf("文件内容:\n");
while ((ch = fgetc(file)) != EOF) {
putchar(ch);
}
// 关闭文件
fclose(file);
return 0;
}
代码说明
- FILE *file;
定义一个文件指针,用于操作文件。 - fopen(filename, "r");
打开文件,"r" 表示以只读模式打开文件。如果文件不存在或无法打开,fopen 会返回 NULL。 - fgetc(file)
从文件中逐个字符读取内容,直到文件结束(EOF)。 - putchar(ch)
将读取的字符输出到控制台。 - fclose(file)
关闭文件,释放资源。
编译和运行
- 将代码保存为 read_file.c。
- 使用以下命令编译:
gcc read_file.c -o read_file
- 运行程序:
./read_file
- 输入要读取的文件名(例如 example.txt),程序会输出文件内容。
示例输入文件
假设有一个文本文件 example.txt,内容如下:
Hello, World!
This is a test file.
Welcome to C programming.
运行程序后,输出:
请输入要打开的文件名: example.txt
文件内容:
Hello, World!
This is a test file.
Welcome to C programming.
注意事项
- 文件路径
如果文件不在当前目录下,需要提供文件的完整路径。 - 文件大小
该程序逐字符读取文件,适合处理较小的文本文件。如果需要处理大文件,可以考虑按行读取(使用 fgets)或分块读取。 - 错误处理
如果文件无法打开,程序会输出错误信息并退出。
扩展:按行读取文件
如果需要按行读取文件,可以使用 fgets 函数。以下是修改后的代码:
#include
#include
int main() {
FILE *file;
char filename[100];
char buffer[256];
// 提示用户输入文件名
printf("请输入要打开的文件名: ");
scanf("%s", filename);
// 打开文件
file = fopen(filename, "r");
if (file == NULL) {
perror("无法打开文件");
return EXIT_FAILURE;
}
// 逐行读取文件内容并输出
printf("文件内容:\n");
while (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("%s", buffer);
}
// 关闭文件
fclose(file);
return 0;
}
这个版本会逐行读取文件内容,适合处理较大的文本文件。