gpt4 book ai didi

c - 处理错误的文件输入名称。当从 argv 中读取名称错误的 i 文件时,程序崩溃。 C语言编程

转载 作者:行者123 更新时间:2023-11-30 20:58:32 25 4
gpt4 key购买 nike

我试图找出如何处理用户输入错误文件名的异常。我通过终端运行程序。如果我尝试在没有文件的情况下运行程序,程序会按预期打印错误消息。但是,如果我运行该程序并输入错误的文件名,它就会崩溃。关于我应该如何处理这个问题有什么建议吗?谢谢你!

代码

FILE *file;

file = fopen(argv[1], "r");
if (argv[1] == NULL) {
fprintf(stderr, "ERROR: No file input\n");
exit(EXIT_FAILURE);
}

最佳答案

argv[1] == NULL 只是测试 argv[1] 存在/不是 NULL,而不是它包含名称一个有效的、可读的文件。幸运的是,fopen 调用确实会检查这一点。如果调用fopenfile == NULL,则fopen因任何原因失败;一个可能的原因是该文件不存在。

此外,要测试 argv 中是否存在命令行参数,您可以仅使用 argc 的值:

if(argc < 2) // No filename supplied
{
fprintf(stderr, "Usage: myprog filename\n");
exit(EXIT_FAILURE);
}

file = fopen(argv[1], "r");

if(file == NULL) // Filename supplied but fopen failed
{
fprintf(stderr, "Could not open \'%s\'", argv[1]);
exit(EXIT_FAILURE);
}

关于c - 处理错误的文件输入名称。当从 argv 中读取名称错误的 i 文件时,程序崩溃。 C语言编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51940194/

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