C语言如何通过输入文件名打开文件?

99ANYc3cd6
预计阅读时长 11 分钟
位置: 首页 C语言 正文

C语言中输入文件名并打开文件

在C语言中,你可以通过以下步骤实现输入文件名并打开文件:

c语言 输入文件名打开文件
(图片来源网络,侵删)

基本方法

#include <stdio.h>
#include <stdlib.h>
int main() {
    char filename[100]; // 存储文件名的数组
    FILE *file;         // 文件指针
    // 提示用户输入文件名
    printf("请输入要打开的文件名: ");
    scanf("%99s", filename); // 限制输入长度防止缓冲区溢出
    // 打开文件
    file = fopen(filename, "r"); // "r"表示读取模式,"w"表示写入模式,"a"表示追加模式
    if (file == NULL) {
        printf("无法打开文件 %s\n", filename);
        return 1; // 返回错误码
    }
    // 文件操作...
    // 关闭文件
    fclose(file);
    return 0;
}

更健壮的实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
    char filename[256];
    FILE *file;
    printf("请输入要打开的文件名: ");
    // 使用fgets代替scanf,可以处理包含空格的文件名
    if (fgets(filename, sizeof(filename), stdin) == NULL) {
        printf("读取输入失败\n");
        return 1;
    }
    // 去除可能的换行符
    filename[strcspn(filename, "\n")] = '\0';
    file = fopen(filename, "r");
    if (file == NULL) {
        perror("打开文件失败"); // perror会打印系统错误信息
        return 1;
    }
    printf("成功打开文件 %s\n", filename);
    // 示例:读取文件内容并打印
    char ch;
    printf("文件内容:\n");
    while ((ch = fgetc(file)) != EOF) {
        putchar(ch);
    }
    fclose(file);
    return 0;
}

常见文件打开模式

模式 描述
"r" 读取(文件必须存在)
"w" 写入(文件不存在则创建,存在则清空)
"a" 追加(文件不存在则创建,存在则在末尾添加)
"r+" 读取/写入(文件必须存在)
"w+" 读取/写入(文件不存在则创建,存在则清空)
"a+" 读取/追加(文件不存在则创建,存在则在末尾添加)

错误处理建议

  1. 始终检查fopen的返回值是否为NULL
  2. 使用perror函数打印有意义的错误信息
  3. 考虑使用strerror(errno)获取详细的错误描述
  4. 确保在程序结束前关闭所有打开的文件

完整示例(带错误处理)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main() {
    char filename[256];
    FILE *file;
    printf("请输入要打开的文件名: ");
    if (fgets(filename, sizeof(filename), stdin) == NULL) {
        fprintf(stderr, "读取输入失败: %s\n", strerror(errno));
        return EXIT_FAILURE;
    }
    filename[strcspn(filename, "\n")] = '\0';
    file = fopen(filename, "r");
    if (file == NULL) {
        fprintf(stderr, "打开文件失败: %s\n", strerror(errno));
        return EXIT_FAILURE;
    }
    printf("成功打开文件 %s\n", filename);
    // 读取文件内容
    printf("\n文件内容:\n");
    char buffer[1024];
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer);
    }
    if (ferror(file)) {
        fprintf(stderr, "读取文件时发生错误: %s\n", strerror(errno));
        fclose(file);
        return EXIT_FAILURE;
    }
    fclose(file);
    return EXIT_SUCCESS;
}

这个实现提供了更全面的错误处理和更安全的输入方式。

c语言 输入文件名打开文件
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
100元买100只鸡C语言如何实现?
« 上一篇 03-07
程序设计与c语言引论pdf适合零基础自学吗?
下一篇 » 03-07

相关文章

取消
微信二维码
支付宝二维码

目录[+]