c语言逐行读取文件?

作者&投稿:彤亨 (若有异议请与网页底部的电邮联系)
关于C语言中文本文件的逐行读取的实现~

若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
C语言中文本文件的逐行读取的实现的代码如下:
#include
main()
{
FILE * fp;
fp=fopen(“noexist”,”a+”);
if(fp= =NULL) return;
fclose(fp);
}

扩展资料
1、如果输入文本每行中没有空格,则line在输入文本中按换行符分隔符循环取值。
2、如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值。
3、可以通过把IFS设置为换行符来达到逐行读取的功能。

[10:30:09 @cfiles]$ cat test8.c
#include
#include
#define MAXLINE 100
int main()
{

FILE *fp;
char arr[MAXLINE+1];

if ((fp = fopen ("MYFILE", "r")) == NULL)
{
perror ("File open error!
");
exit (1);
}
while ((fgets (arr, MAXLINE, fp)) != NULL)
{
fputs (arr, stdout);
}
return 0;
}
[10:30:35 @cfiles]$ gcc test8.c
[10:30:40 @cfiles]$ ./a.out
abcdef
sdkpn
love
[10:30:52 @cfiles]$ cat MYFILE
abcdef
sdkpn
love

可以使用fgets函数。

1 函数名:

fgets

2 声明:

char *fgets(char *buf, int bufsize, FILE *stream);

3 头文件:

stdio.h

4 功能:

从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。


5 参数:

*buf: 字符型指针,指向用来存储所得数据的地址。

bufsize: 整型数据,指明存储数据的大小。

*stream: 文件结构体指针,将要读取的文件流。


6 返回值:

成功,则返回第一个参数buf;

在读字符时遇到end-of-file(文件结尾),则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则buf保持原来的内容,返回NULL;

如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变。


7 示例代码:

逐行读取in.txt中的数据,并打印。每行不超过100个字符。

int main()
{
    FILE *fp;
    char buf[101];
    fp = fopen("in.txt", "r");//打开文件
    while(fgets(buf, sizeof(buf), fp))//每次读取一行数据,直到读取失败。
    {
        printf("%s
", buf); //打印该行。
    }
    fclose(fp);//关闭文件。
    
    return 0;
}


#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);
}
}
另外,虚机团上产品团购,超级便宜

#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);
}
}

#include <stdio.h>
#include <stdlib.h>
#define MAXLINE 100
int main()
{

FILE *fp;
char arr[MAXLINE+1];

if ((fp = fopen ("MYFILE", "r")) == NULL)
{
perror ("File open error!\n");
exit (1);
}
while ((fgets (arr, MAXLINE, fp)) != NULL)
{
fputs (arr, stdout);
}
return 0;
}


c++ 逐行读取文件
include<fstream> include<stream> using namespace std;int main(){ fstream fin("data.txt"); \/\/打开文件 string ReadLine;while(getline(fin,ReadLine)) \/\/逐行读取,直到结束 { ...} fin.close();return 0 }

c语言逐行读取文件数据并放入数组中
\/\/刚写的下面的代码,测试通过,如果有疑问,欢迎交流\/\/只要忽略数组的第一个元素的就可以了\/\/另外需要需要,可以把数组修改为二维数组#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){char tar[10000];int cur_lib[1000];char *ch;FILE * fp = fopen("tar.txt", "r")...

关于c++里的正则表达式,请问如何逐行读取文件的内容,并识别某种格式再进...
void Load(string str){ ifstream in(str);ofstream out1("file1.txt");ofstream out2("file2.txt");int i = 0;string s;string a[6]={"你", "我", "他", "它", "是", "的"};while(getline(in,s))\/*逐行读取,内容如如 "2011.8.15 565 533 888 我是xx"*\/...

为了从文本文件中逐行读取内容应该使用哪个处理流对象
BufferedReader。为了从文本文件中逐行读取内容应该使用BufferedReader处理流对象,能加快读取字符的速度。处理流,也叫包装流,是对一个对于已存在的流的连接进行封装,通过所封装的流的功能调用实现数据读写。

求助:c++从txt文件中逐行读取数据,并且分别保存
include <iostream> include <fstream> using namespace std;int main(int argc, char *argv[]){ \/\/ 数据文件名假设:data.txt,和程序在同一个目录下 fstream fin("data.txt");\/\/ 打开文件成功 if(fin){ int rowNum = 0;\/\/一行中的两个数据存到两个变量中 double a,b;while(fin>>a>...

安卓逐行读取txt文件数据
试着写了下,实现了。思路就是用IO流,BufferedReader类的readLine()方法来逐行读取txt文件因为章节标题一般都是独占一行的,然后用正则表达式来判断,代码如下(顺便给每章加了跳转标示,用offset记录下字节数,之后用dr.skip(offset)方法就能直接跳转到该行):new Handler().post(new Runnable() @...

VB6.0中如何实现逐行读入文本文件?
VB6.0可以用一次读取文本文件全部文本内容,然后使用Split函数来实现一行一行提取文本框行内容。Split函数,返回一个下标从零开始的一维数组,它包含指定数目的子字符串。以下代码是可以提取文本文件任何一行内容的:Private Sub Command1_Click() Dim strWj As String Dim strj() As String Dim...

python逐行读取txt文件 每行为一个list
!\/usr\/bin\/env Python# coding=utf-8import re# 你的文件路径path = ".\/tags.txt"# 读取文件file = open(path, encoding="utf-8")# 定义一个用于切割字符串的正则seq = re.compile("\\s+")result = []# 逐行读取for line in file: lst = seq.split(line.strip()) item = {...

java怎么读入文件,并逐行输出
java读入文件,并逐行输出,先在D:\/\/home建立个文件夹,然后创建一个a.txt文件,然后编辑文件,文本编辑的编码是utf-8,然后用流逐行读取输出,如下:import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;...

C++如何在txt文件中逐行读取内容并判断其中是否存在指定的汉字,如果存 ...
void Load(string str){ ifstream in(str);ofstream out1("file1.txt");ofstream out2("file2.txt");int i = 0;string s;string a[6]={"你", "我", "他", "它", "是", "的"};while(getline(in,s))\/*逐行读取,内容如如 "2011.8.15 565 533 888 我是xx"*\/...

桂平市14752886884: c语言逐行读取文件? -
纵科保和: 可以使用fgets函数. 1 函数名: fgets 2 声明: char *fgets(char *buf, int bufsize, FILE *stream); 3 头文件: stdio.h 4 功能: 从文件结构体指针stream中读取数据,每次读取一行.读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个...

桂平市14752886884: c语言一行一行的读取文件 -
纵科保和: [10:30:09 @cfiles]$ cat test8.c#include <stdio.h>#include <stdlib.h>#define MAXLINE 100 int main() { FILE *fp; char arr[MAXLINE+1]; if ((fp = fopen ("MYFILE", "r")) == NULL) { perror ("File open error!\n"); exit (1); } while ((fgets (arr, ...

桂平市14752886884: 关于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);//这里的操作你自己定义 } int main() { FILE *fp; char *buf, ...

桂平市14752886884: C语言 怎么读取文件的每一行的内容 -
纵科保和: #include <stdio.h> int main() {int i,n;char a[1024];FILE *fp;gets(a);if((fp=fopen(a,"r"))==NULL){printf("File Name Error.\n");return 0;}scanf("%d",&n);i=0;while(!feof(fp)){if(fgets(a,1000,fp)){i++;if(i==n){puts(a);fclose(fp);...

桂平市14752886884: c语言怎样按行读取 -
纵科保和: 区分读取的源,有如下两种情况:1 从标准输入读取,即stdin. 可以使用gets函数: char * gets(char *str); 该函数会从标准输入中读取一行数据,直到读到\n,并将\n替换为字符串结束符\0,读取到的数据以字符串形式存于str中. 需要注意的...

桂平市14752886884: C语言编程求助,怎么从一个文本文件中依次读取其中的每行,并做处理 -
纵科保和: 如果定义二维数组,可以这样做:char *copy[100]; // 定义最多100行 char *tmp; FILE *fp;int index=0; fp=fopen(file_name,"r"); while((tmp=fgets(fp))!=EOF){ //处理tmp值,切记tmp是没有开辟空间,如果需要保存处理的结果需要定义开辟空间的变量 // do_copy() copy[index] = (char *)malloc(100); //限制每行最多100个字符存储空间 strcpy(copy[index],tmp); index++; }

桂平市14752886884: C语言 怎么读取文件的每一行的内容 -
纵科保和: #include int main(){ int i,n; char a[1024]; FILE *fp; gets(a); if((fp=fopen(a,"r"))==NULL) { printf("File Name Error.\n"); retu...

桂平市14752886884: c语言中如何读取文本文件中每一行的数据 -
纵科保和: 用fstream(文件流),fstream file 然后 file.getline(char*,int,char a='\n')第一个是一个存储字符串的指针,第二个是要读取的最大长度,第三个是行结束符,默认是回车,函数说明就是当读入的字符超过最大长度int或者遇到行结束符('\n')时就停止,而且这个很好用的(对于读入和写入),你看看文档就会了,哈哈,给分啊.!!~~

桂平市14752886884: C语言如何从指定行读取文件 -
纵科保和: #include//从文件p中接收第n行字串,保存在str中 //假设一行的文本内容不超过1000字符,如果估计超过,请自行修改函数中的1000 //如果打不开文件,返回NULL //如果文件不足n行,返回NULL //如果正获得正常数据,返回str的地址 char *...

桂平市14752886884: 问个c语言整行读取文件的方法 -
纵科保和: 1 打开文件 fopen("需要打开的路径", "打开的模式"); 2 使用fgets函数读取行; 3 读取完成后,fclose关闭文件. 参考代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LINE 1024 int main() {char buf[...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网