gpt4 book ai didi

c - 我怎样才能找到打开文件时的错误?

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

Fopen 和 Fclose 是我的源文件中的包装函数,用于在打开文件时检查错误。当我运行我的程序时,它说存在 Fopen 错误。我没有发现打开文件期间出现错误的原因。

抱歉代码太长。

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include "perry.h"

int main(void)
{
void copyStrings(char *infile, char *outfile, char ch);
void compareFiles(char *infile, char *outfile);

char inputfile[80];
char outputfile[80];
char ch;

printf("Enter input filename: ");
scanf("%s", inputfile);
printf("Enter output filename: ");
scanf("%s", outputfile);
printf("Enter a character: ");
scanf(" %c", &ch);

if(!isalpha(ch))
{
printf("Did not enter a letter!");
exit(1);
}

copyStrings(inputfile, outputfile, ch);
compareFiles(inputfile, outputfile);

return 0;
}

void copyStrings(char *infile, char *outfile, char ch)
{
int count;
char *ptr;
char *line;
char linePart[80];
FILE *fin;
FILE *fout;

fin = Fopen(infile, "r");
fout = Fopen(outfile, "w");

while(fgets(line, 80, fin) != NULL)
{
for(ptr=line;ptr<line+strlen(line);ptr++)
{
if(*ptr == ch)
count ++;
}
if(count < 2)
fputs(line, fout);
else
{
memset(linePart, '\0', strlen(line)+1);
line = strchr(line, ch);
strncpy(linePart, line, strchr(line+1, ch) - line + 1);
fputs(linePart, fout);
fprintf(fout, "\n");
}
}

Fclose(fout);
Fclose(fin);

return;
}

void compareFiles(char *infile, char *outfile)
{
int count = 0;
char inputString[80];
char outputString[80];
FILE *fin;
FILE *fout;

fin = Fopen(infile, "r");
fout = Fopen(outfile, "r");

while(fgets(inputString, 80, fin) != NULL)
{
count += 1;
if(strcmp(inputString, fgets(outputString, 80, fout)) == 0)
{
printf("Strings are equal at line %d\n\nBoth strings look like this: %s",
count, inputString);
}
}
Fclose(fout);
Fclose(fin);

return;
}

最佳答案

您应该在 FopenFclose 中放置 perror,以便它描述包装函数失败的原因。

fopen 的 Linux 手册页指出,它可能会因以下原因而失败:

  • 提供的模式无效

  • 如果在 fopen 中调用的 malloc 函数失败

  • 如果 fopen 中使用的 open 函数失败。

关于c - 我怎样才能找到打开文件时的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869739/

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