gpt4 book ai didi

C-打开并读取文件

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

可编译代码 `

#include <stdio.h>
#include <stdlib.h>
FILE * openFile(int argc, char *argv[]);
int readMonth(FILE *fin);

int main(int argc, char *argv[])
{

int month, choice;
int * temps;
FILE * fin = NULL;

fin = openFile(argc, argv);

month = readMonth(fin);

}


FILE * openFile(int argc, char *argv[])
{

int test;
FILE * fin = NULL;
fin = fopen(argv[2], "r");
fscanf(fin, "%d", &test);
if(fin==NULL){
perror("fopen");
exit(1);}
return fin;
}

int readMonth(FILE *fin)
{
int month=0;
int n = fscanf(fin, "%d", &month);
if(n!=1)
{printf("error reading month from file\n");
exit(1);}
printf("%d\n", month);
return month;
}`

我正在尝试从文本文件中读取数据,但得到了奇怪的结果。

我从 main 调用 fileOpen 返回文件指针,这是我的函数:

FILE * fileOpen(int argc, char *argv[])

{

FILE* fin = NULL;
fin = fopen(*argv, argc);
return fin;
}

然后调用readMonth读取文件的第一行,它没有打印正确的整数。

int readMonth(FILE *fin)
{

int month=0;
fscanf(fin, "%d", &month);
printf("%d", month);
return month;
}

我不确定错误是与文件打开还是读取文件有关。

最佳答案

这里有一些建议。 1.检查fopen的返回值

FILE *fileOpen(int argc, char *argv[] {
FILE* fin = NULL;
fin = fopen(*argv, "r");
if(fin == NULL) { // this block is new
perror("fopen");
exit(1);
}
return fin;
}

注意:如果 argcargv 来自 main,则 *argvargv[0]这是程序的名称。您可能需要 argv[1]。并且您应该检查 main 中的 argc >= 2

2:检查fscanf的返回值:

int readMonth(FILE *fin)
{

int month=0;
int n = fscanf(fin, "%d", &month);
if(n != 1) { // this block is new
printf("error reading month from file\n");
exit(1);
}
printf("%d", month);
return month;
}

通过这两项更改,您的代码应该可以正常运行。

关于C-打开并读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20014533/

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