c读文件内容|C语言文件的文本怎么读取

c读文件内容|C语言文件的文本怎么读取的第1张示图

Ⅰ C语言读取文件内容的程序

感觉你贴出来的代码跟题目要求差距有点大啊

代码(ps:这里输入的文件名就是一个相对路径,所以给定的测试文本要放在本程序同目录下):

#include<stdio.h>#include<stdlib.h>voidmain(){FILE*fp;charfilename[30],temp[1024];intcount,i,flag=1;printf("请输入文件名:");gets(filename);if((fp=fopen(filename,"r"))==NULL)//文件不存在{printf("FileNameError");exit(0);}else//文件存在{printf("请选择行数:");scanf("%d",&count);for(i=1;i<=count;i++){if(fgets(temp,1024,fp)==NULL)//不存在第count行{flag=0;break;}}if(flag==0)printf("LineNoError");elseprintf("第%d行是:%s",count,temp);//打印第count行}fclose(fp);}

测试文本内容:

Ⅱ C++中如何读取文件内容

两种读取方法,一种是按行读取,一种是按单词读取,具体如下:

1、按照行读取

string filename = "C:\Users\asusa\Desktop\蓝桥\rd.txt";

fstream fin;

fin.open(filename.c_str(), ios::in);

(此处空格一行)

vector<string> v;

string tmp;

(此处空格一行)

while (getline(fin, tmp))

{

v.push_back(tmp);

}

(此处空格一行)

for (auto x : v)

cout << x << endl;

2、按照单词读取

string filename = "C:\Users\asusa\Desktop\蓝桥\rd.txt";

fstream fin;

fin.open(filename.c_str(), ios::in);

(此处空格一行)

vector<string> v;

string tmp;

(此处空格一行)

while (fin >> tmp)

{

v.push_back(tmp);

}

(此处空格一行)

for (auto x : v)

cout << x << endl;

(2)c读文件内容扩展阅读:

有读取就有写入,下面是写入的方法

//向文件写五次hello。

fstream out;

out.open("C:\Users\asusa\Desktop\蓝桥\wr.txt", ios::out);

(此处空格一行)

if (!out.is_open())

{

cout << "读取文件失败" << endl;

}

string s = "hello";

(此处空格一行)

for (int i = 0; i < 5; ++i)

{

out << s.c_str() << endl;

}

out.close();

Ⅲ C语言文件的文本怎么读取

根据你给的文件保存的数据的格式,我猜测每一行是一个学生的信息,格式如下:

序号 姓名 成绩1 成绩2 成绩3 …

知道了题意和题目要求,那么一切将会变得简单起来,请看代码。

#include<stdio.h>#defineREAD_FILE"data.txt"/*要读取的文件的名字*/#defineWRITE_FILE"T_data.txt"/*要写入的文件的名字*/#defineSTU_NUM10/*最大学生人数*/#defineMAX_LEN50/*一行的最大字符数*//**获取总分函数*/intget_sum(charconst*msg){intsum=0;inttmp;/**遍历一行字符*/while(*msg!=''){/**以空格为一项成绩的分隔标志*/tmp=0;while(*msg!=''&&*msg!=''){/**char类型数字转int类型数字*/tmp=(tmp*10)+((*msg)-'0');msg++;}/**求总和*/sum+=tmp;if(*msg==''){break;}msg++;}returnsum;}intmain(void){FILE*rfp,*wfp;/*声明读取/写入文件指针*/charstudent[STU_NUM][MAX_LEN];/*存放读取到的数据缓存数组*/charch;intsum[STU_NUM];/*成绩总和*/inti=0;intj=0;intk=0;rfp=fopen(READ_FILE,"r");/*打开数据文件*/if(rfp==NULL){perror(READ_FILE);exit(1);}for(i=0;i<STU_NUM;i++){sum[i]=0;}/**逐个字符读取文件的内容,*直至遇到文件结束符为止。*/i=0;while((ch=fgetc(rfp))!=EOF){/**遇到换行符表示已经读取完一个学生的资料;*否则继续将数据写入缓存数组中。*/if(ch==''){student[i][j]='';j=0;i+=1;}else{student[i][j++]=ch;}}student[i][j]='';wfp=fopen(WRITE_FILE,"w");/**开始分析数据*根据文件存放数据的格式,从下标为2的位置开始分析数据。*当遇到空格时证明后面的数据是成绩,每一科成绩分数均以空格分开。*printf是显示出来。*fprintf是写入另一个文件。*/for(j=0;j<=i;j++){k=2;printf("%c%c",student[j][0],student[j][1]);fprintf(wfp,"%c%c",student[j][0],student[j][1]);while(student[j][k]!=''){printf("%c",student[j][k]);fprintf(wfp,"%c",student[j][k]);k++;}printf("'ssumofscoresumis");fprintf(wfp,"'ssumofscoresumis");sum[j]=get_sum(&student[j][k]);printf("%d",sum[j]);fprintf(wfp,"%d",sum[j]);}/**记得关闭文件哦。*/fclose(rfp);fclose(wfp);return0;}

以下是运行结果:

这个程序仅仅是针对你的题目要求来的,文件存放的数据格式不能更改,否则会出错。每一行必须以回车键结束,最后一行的最后一个字符之后什么也不能有。我尽量以你看得懂的方法来写,关键部分都带有注释,有问题不要追问了,自己多思考思考,实在解决不来还是很欢迎可以追问的哦,哈哈哈!!!

Ⅳ C语言中读取txt文件内容

楼主朋友,你的程序中的问题出在分配空间不足上。比如当你想让a[j]指向某段内存时,用的是 a[j]=(char *)malloc(sizeof(char)); 而到了后面你是要在这段内存中存入一个字符串的,所以就发生了越界。下面是我根据你的代码片段写的一个测试程序,经过修改应该没问题了。#include <stdio.h>#include <stdlib.h>int main (void){ char path[]="12345.txt"; FILE *create; if((create=fopen(path,"r"))!=NULL) { int j; char **a; a=(char **)malloc(100*sizeof(char*)); //此处如果只申请一个char *大小的空间时, //你以后的a[j]往哪里放?此处的100是假设你的文件中有100行信息。如果超过100还得多分配 for (j=0;;j++) { a[j]=(char *)malloc(10000*sizeof(char)); //此处只申请一个字符的空间,后面读取 //长度为10000的字符串就没地方存放了 fgets(a[j],10000,create); printf("%s",a[j]); //测试读取是否成功,将文件中信息显示到屏幕上 if(feof(create)!=0) { for(;j=0;j–) free(a[j]); break; } } free(a); } else printf("Fail to open the file.\n"); fclose(create); printf("\n");}

Ⅳ c语言读取文本文件

1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。2、例程:

#include<stdio.h>inta;charb,c[100];intmain(){FILE*fp1=fopen("input.txt","r");//打开输入文件FILE*fp2=fopen("output.txt","w");//打开输出文件if(fp1==NULL||fp2==NULL){//若打开文件失败则退出puts("不能打开文件!");rturn0;}fscanf(fp1,"%d",&a);//从输入文件读取一个整数b=fgetc(fp1);//从输入文件读取一个字符fgets(c,100,fp1);//从输入文件读取一行字符串printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数fputs(c,fp2);//向输出文件写入一行字符串fputc(b,fp2);//向输出文件写入一个字符fprintf(fp2,"%d",a);//向输出文件写入一个整数fclose(fp1);//关闭输入文件fclose(fp2);//关闭输出文件,相当于保存return0;}

Ⅵ c语言中读取txt文件内容

如果下面的代码是你的话,链表的长度返回1是正常的,因为你的链表项数据只有一个字符呀!

Ⅶ C语言读取txt文件内容

#include<stdio.h>#include<stdlib.h>intmain(){FILE*file;char*data;intfileSize;//打开文件“D:a.txt”file=fopen("D:\a.txt","r");//获得文件大小fseek(file,0,SEEK_END);fileSize=ftell(file);fseek(file,0,SEEK_SET);//分配内存data=(char*)malloc(fileSize+1);//读取文件fread(data,sizeof(char),fileSize,file);data[fileSize]=0;//输出内容(你想对内容干什么都可以了)printf("%s",data);return0;}

Ⅷ C语言如何读取txt文本里面的内容

C语言可以使用fopen()函数读取txt文本里。

示例:

#include <stdio.h>

FILE *stream, *stream2;

void main( void )

{

int numclosed;

/* Open for read (will fail if file "data" does not exist) */

if( (stream = fopen( "data", "r" )) == NULL )

printf( "The file 'data' was not opened" );

else

printf( "The file 'data' was opened" );

/* Open for write */

if( (stream2 = fopen( "data2", "w+" )) == NULL )

printf( "The file 'data2' was not opened" );

else

printf( "The file 'data2' was opened" );

/* Close stream */

if(fclose( stream2 ))

printf( "The file 'data2' was not closed" );

/* All other files are closed: */

numclosed = _fcloseall( );

printf( "Number of files closed by _fcloseall: %u", numclosed );

}

(8)c读文件内容扩展阅读

使用fgetc函数

#include <stdio.h>

#include <stdlib.h>

void main( void )

{

FILE *stream;

char buffer[81];

int i, ch;

/* Open file to read line from: */

if( (stream = fopen( "fgetc.c", "r" )) == NULL )

exit( 0 );

/* Read in first 80 characters and place them in "buffer": */

ch = fgetc( stream );

for( i=0; (i < 80 ) && ( feof( stream ) == 0 ); i++ )

{

buffer[i] = (char)ch;

ch = fgetc( stream );

}

/* Add null to end string */

buffer[i] = '';

printf( "%s", buffer );

fclose( stream );

}

Ⅸ 如何用C语言循环读取文件内容

循环读取一个文件的内容。

这样做没有任何意义,不如把读取的内容保持在变量当中,节省空间时间。如果非要反复读取的话可以使用rewind函数把文件指针重置。

函数名: rewind()功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头注意:不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。rewind函数作用等同于 (void)fseek(stream, 0L, SEEK_SET);

循环读取多个文件的内容。

把多个文件名存在一个字符串数组当中。使用循环语句反复打开-读取-关闭即可。

例如:

char*s[3]={"文件一","文件二","文件三"};for(i=0;i<3;i++){f=fopen(s[i]);//打开第i个文件//读取数据fclose(f);//关闭文件}

Ⅹ linux下c语言 读取文件内容

没测试过,不过问题应该是fgetc这里fgetc获取到第一个字符,比如第一行的'#'号,然后fgets获取到后面的字符,打印版当然就没有权第一个字符了,解决方式要么只用fgets,要么把fgetc获取的字符也打印出来

未经允许不得转载:山九号 » c读文件内容|C语言文件的文本怎么读取

赞 (0)