[英]C - Read file line by line
代码运行的很好,只是感觉还是有很多错误,给我一个以后改进的小方向。 我想学习如何正确维护代码。
修复代码,因为它应该!
数据.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 进行阅读”这一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.