gpt4 book ai didi

C - 逐行读取文件

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

代码运行良好,只是感觉还有很多错误,给我以后改进的一点方向。我想学习如何正确维护代码。

按应有的方式修复代码!

数据.txt

[1] Line numbers 1.
[2] Line numbers 2.
[3] Line numbers 3.
[4] Line numbers 4.
[5] Line numbers 5.
[6] Line numbers 6.

我的代码:

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

int getLengthFile(char *namafile)
{
FILE *fptr;
int n =0;
fptr = fopen(namafile, "r");
if(fptr != NULL){
char c;
while((c = getc(fptr)) != EOF) {
++n;
}
fclose(fptr);
}
return n;
}

int main(){
FILE *fptr;
int i;
fptr = fopen("Data.txt","r");
if(fptr != NULL){
printf("Succes reads file!\n");
if(getLengthFile("Data.txt")>0){
char strLine[225];
while(fgets(strLine,225,fptr) != NULL){
printf("%s",strLine);
}
}else{
printf("File is empty!\n");
}
fclose(fptr);
}else{
printf("Error reads file!\n");
}

return 0;
}

最佳答案

这是问题第一版中提供的代码的或多或少固定版本,其中不存在 getLengthFile() 函数。在我看来,该函数没有提供有用的功能。如果您必须报告文件不包含数据,您可以通过计算 fgets() 返回任何数据的次数来实现这一点 - 如果它返回任何数据,则文件不为空。

#include <stdio.h>

int main(void)
{
const char filename[] = "Data.txt";
FILE *fptr = fopen(filename, "r");
if (fptr == NULL)
{
fprintf(stderr, "Error opening file %s for reading!\n", filename);
return 1;
}
printf("Success opening file %s for reading\n", filename);
char strLine[225];
while (fgets(strLine, sizeof(strLine), fptr) != NULL)
printf("%s", strLine);
fclose(fptr);

return 0;
}

当没有文件Data.txt时,示例输出为:

Error opening file Data.txt for reading!

当文件包含一小行数据时,示例输出为:

Success opening file Data.txt for reading
data from the file Data.txt

我还在一个较长行的文件上进行了测试,包括多达 380 个字符的行,程序的输出与输入相同,除了“成功打开文件 Data.txt 进行读取”这一行之外.

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

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