在c语言中,如何读取一个txt文件中的信息
在c语言中,如何读取一个txt文件中的信息:要求是读取文件中的所有内容(里面包括中文及英文字符),然后把它保存到数组里面,这个数据会很大,有上千行的数据.顺便问下,当我对...
在c语言中,如何读取一个txt文件中的信息:
要求是读取文件中的所有内容(里面包括中文及英文字符),然后把它保存到数组里面,这个数据会很大,有上千行的数据.
顺便问下,当我对这些数据处理后,又怎样输出到另外一个txt中呐
谢谢了
文件里面的内容大概是:"
aaaaa汉字aaa
aaaaaaaaa
汉字汉字汉字
"类似这样的,我想把所有数据都放到数组里
是纯c语言,老师上课教的糊里糊涂,我也学的糊里糊涂,现在又想学了,所以有些还是不懂
还有问题."每遇到\n就开一个新数组",这个怎么实现?
还有,如果是上万条的数据,开那么多数组,没事吧!
fo是这些数据的首指针吧? 展开
要求是读取文件中的所有内容(里面包括中文及英文字符),然后把它保存到数组里面,这个数据会很大,有上千行的数据.
顺便问下,当我对这些数据处理后,又怎样输出到另外一个txt中呐
谢谢了
文件里面的内容大概是:"
aaaaa汉字aaa
aaaaaaaaa
汉字汉字汉字
"类似这样的,我想把所有数据都放到数组里
是纯c语言,老师上课教的糊里糊涂,我也学的糊里糊涂,现在又想学了,所以有些还是不懂
还有问题."每遇到\n就开一个新数组",这个怎么实现?
还有,如果是上万条的数据,开那么多数组,没事吧!
fo是这些数据的首指针吧? 展开
2个回答
展开全部
一般来说在C语言中读取txt文件的信息有两种方法,一种是使用C语言标准文件I/O中的fopen()、fread()等等函数,一种是调用操作系统中的API函数,比如Windows上的ReadFile()、OpenFile()等等,现在操作系统一般都具备内存文件映射功能,对于大的txt文件,一般都使用这种方式操作。下面是一个使用C语言标准文件I/O操作文件的例子。
#include<stdio.h>
FILE*stream;
void main(void)
{
long l;
float fp;
char s[81];
char c;
stream=fopen("fscanf.out","w+");
if(stream==NULL)
printf("Thefilefscanf.outwasnotopened\n");
else
{
fprintf(stream,"%s%ld%f%c","hello world",
65000,3.14159,'x');
/*Setpointertobeginningoffile:*/
fseek(stream,0L,SEEK_SET);
/*Readdatabackfromfile:*/
fscanf(stream,"%s",s);
fscanf(stream,"%ld",&l);
fscanf(stream,"%f",&fp);
fscanf(stream,"%c",&c);
/*Outputdataread:*/
printf("%s\n",s);
printf("%ld\n",l);
printf("%f\n",fp);
printf("%c\n",c);
fclose(stream);
}
}
展开全部
纯C语言,不是C++?
这样的话,任何一本C语言课本都会讲到文件的操作吧~
FILE* fo;
fo=fopen("文件名","r");
然后建立一个新文件供写入
FILE* fn;
fn=fopen("文件名","w+");
然后用fgetc读,读到的东西存到数组里,每遇到\n就开一个新数组,直到读到EOF
读出来的东西再一个一个fputc回新文件里就行了。
最后
fclose(fo);
fclose(fn);
补充:
fo是FILE型指针,可能指向文件的任何位置,用fseek等操作
fgetc读出来是一个char,肯定要放到一个char型数组对吧,你可以用几万行的2维数组,也可以用几万个1维数组
遇到行结束了,要不就转向二维数组的下一行,要不就新建一个1维数组,这个你会吧:
int* a;
a=(int*)malloc(10000*sizeof(int));
建议用2维数组,简单一点
几万行的文件一点都不大,可以说是比较小的:),放心。
还有,建议你多去看看MSDN之类的或者C教材中对文件操作例程的信息。
这样的话,任何一本C语言课本都会讲到文件的操作吧~
FILE* fo;
fo=fopen("文件名","r");
然后建立一个新文件供写入
FILE* fn;
fn=fopen("文件名","w+");
然后用fgetc读,读到的东西存到数组里,每遇到\n就开一个新数组,直到读到EOF
读出来的东西再一个一个fputc回新文件里就行了。
最后
fclose(fo);
fclose(fn);
补充:
fo是FILE型指针,可能指向文件的任何位置,用fseek等操作
fgetc读出来是一个char,肯定要放到一个char型数组对吧,你可以用几万行的2维数组,也可以用几万个1维数组
遇到行结束了,要不就转向二维数组的下一行,要不就新建一个1维数组,这个你会吧:
int* a;
a=(int*)malloc(10000*sizeof(int));
建议用2维数组,简单一点
几万行的文件一点都不大,可以说是比较小的:),放心。
还有,建议你多去看看MSDN之类的或者C教材中对文件操作例程的信息。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询