gpt4 book ai didi

c - 为什么我的文件打不开以及如何修复它?

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

每当我运行程序时,屏幕都会打印“无法打开文件文件名”。我遵循讲义中的指导方针和方法,但真的不明白为什么它打不开。任何形式的帮助将不胜感激。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

#define READONLY "r"

int main (void)
{
FILE *ipfile;
char filename[FILENAME_MAX+1];
int *unsorted_details;
int elements;

printf("Enter the name of the input file:\n");
scanf("%s", filename);

if((ipfile=fopen(filename, READONLY)) == NULL){
fprintf(stderr, "Couldn't open %s. \n", filename);
exit(EXIT_FAILURE);
}
if (fscanf(ipfile, "%d", &elements) != 1){
fprintf(stderr, "Couldn't read object details from %s\n",
filename);
exit(EXIT_FAILURE);
}
if ((unsorted_details=(int *)malloc(elements * sizeof(int))) == NULL){
fprintf(stderr, "Failed to allocate memory.\n");
exit (EXIT_FAILURE);
}
/* Reading elements from file into unsorted array*/
int i;
for (i=0; i<elements; i++){
if(!fscanf(ipfile, "%d", &unsorted_details[i])){
fprintf(stderr, "Error reading element %d of the list\n", i+1);
exit (EXIT_FAILURE);
}

}
fclose(ipfile);
free(unsorted_details);
return (EXIT_SUCCESS);
}

最佳答案

大多数库函数都使用一个名为 errno 的外部变量,该变量在其中一个函数失败时设置,并指示失败的原因。

您可以通过调用 perror 来获取错误消息的文本描述,它将错误消息打印到 stderr,也可以调用 strerror(errno ),它返回一个 char *,它指向错误消息,您可以随后将其放入自己的错误消息中。

如果调用 fopen 失败,请将错误消息更改为以下内容:

fprintf(stderr, "Couldn't open %s: %s \n", filename, strerror(errno));

您可以对其他错误消息进行类似的更改。一旦执行此操作,您就会知道该函数失败的原因并采取适当的措施。

关于c - 为什么我的文件打不开以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47633259/

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