关于C语言中文本文件的逐行读取的实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C语言中文本文件的逐行读取的实现相关的知识,希望对你有一定的参考价值。
现有helloworld.txt文本文件。
void main()
while (1)
ReadData();
someprocess();
本程序的主要目的是,ReadData()函数每次从helloworld.txt中读取下一行内容,然后由someprocess()函数对读到的内容进行处理。
请大家不吝赐教!
这个ReadData()函数的实现难点是:
如果第i次调用ReadData()时读取的是第i行,那么第i+1次调用时读取的就是第i+1行。
第i次调用ReadData()时读取第i行后,ReadData()即执行结束。希望当第i+1次调用ReadData()函数时,它能读第i+1行。
若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
C语言中文本文件的逐行读取的实现的代码如下:
#include<stdio.h>
main()
FILE * fp;
fp=fopen(“noexist”,”a+”);
if(fp= =NULL) return;
fclose(fp);
扩展资料
1、如果输入文本每行中没有空格,则line在输入文本中按换行符分隔符循环取值。
2、如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值。
3、可以通过把IFS设置为换行符来达到逐行读取的功能。
参考技术A #include <stdio.h>#include <stdlib.h>
#define LINE 1024
char *ReadData(FILE *fp, char *buf)
return fgets(buf, LINE, fp);//读取一行到buf
void someprocess(char *buf)
printf("%s", buf);//这里的操作你自己定义
int main()
FILE *fp;
char *buf, filename[20], *p;
printf("input file name:");
gets(filename);
if ((fp=fopen(filename, "r"))==NULL)
printf("open file error!!\\n");
return;
buf=(char*)malloc(LINE*sizeof(char));
while(1)
p=ReadData(fp, buf);//每次调用文件指针fp会自动后移一行
if(!p)//文件读取结束则跳出循环
break;
someprocess(buf);
return 0;
程序执行效果与1.txt的内容显示完全一致。
参考技术Bchar *fgets(char *buf, int bufsize, FILE *stream);
成功,则返回第一个参数buf;否则返回NULL
例子:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<malloc.h>
#define FILE_PATH "/home/tmp/test/test.txt"
#define BUFF_LEN 256
int main()
FILE *fp = NULL;
char *file = FILE_PATH;
char *line = (char *)malloc(BUFF_LEN * sizeof(char));//和C++不同的是,事先要申请空间,否则报段错误
if( (0 != access(file,R_OK|F_OK)) || (NULL==(fp=fopen(file,"r"))) )
printf("open %s failed\\n",file);
return -1;
while( fgets(line, BUFF_LEN, fp) != NULL )//逐行读取数据
printf("the content of each line is:\\n%s",line);
if(fp!=NULL)
fclose(fp);
return 0;
扩展资料
C++逐行读取txt文件中的字符串
#include<stdio.h>
#include<string.h>
intmain()
charszTest[1000]=0;
intlen=0;
FILE*fp=fopen("1.txt","r");
if(NULL==fp)
printf("failedtoopendos.txt\\n");
return1;
while(!feof(fp))
memset(szTest,0,sizeof(szTest));
fgets(szTest,sizeof(szTest)-1,fp);//包含了换行符
printf("%s",szTest);
fclose(fp);
printf("\\n");
return0;
参考技术C #include <stdio.h>#include <stdlib.h>
#define LINE 1024
char *ReadData(FILE *fp, char *buf)
return fgets(buf, LINE, fp);//读取一行到buf
void someprocess(char *buf)
printf("%s", buf);//这里的操作你自己定义
void main()
FILE *fp;
char *buf, filename[20], *p;
printf("input file name:");
gets(filename);
if ((fp=fopen(filename, "r"))==NULL)
printf("open file error!!\n");
return;
buf=(char*)malloc(LINE*sizeof(char));
while(1)
p=ReadData(fp, buf);//每次调用文件指针fp会自动后移一行
if(!p)//文件读取结束则跳出循环
break;
someprocess(buf);
本回答被提问者采纳 参考技术D #include <stdio.h>
int ReadData(void)
unsigned int rc, i, get; /*get为读取一个字节*/
FILE *fp;
fp = fopen("helloworld.txt", "r+");
if (fp == NULL)
return -1; /*打开文件失败返回-1*/
rc=0;
i=0;
while ((get = fgetc(fp)) != EOF)
if((char)get == '\n') /*记录换行符*/
rc = ftell(fp);
i++;
rc++;
return i;
int main()
int row;
row = ReadData();
printf("Row = %d\n", row); /*打印文件行数*/
return 0;
如何用VBS逐行读取文本文件的内容,并输入变量
如题。在一文本文件中("c:123.txt")有若干行(未知行数),怎么逐行读取该文件,输入到变量里(可以用一维数组)。求高手解答。
新手,使用变量的时候不要太专业 看不懂....
Set file1 = fso.OpenTextFile("c:\123.txt",Forreading, False)
DO While file1.AtEndOfStream <> True
'读出每行
line =line & file1.ReadLine & vbcrlf
loop
msgbox line本回答被提问者采纳
以上是关于关于C语言中文本文件的逐行读取的实现的主要内容,如果未能解决你的问题,请参考以下文章