如何读取多行文本内容

renzu 2008-06-17 07:47:26
rt
test1.txt:内容
Hello1
Hello2
Hello3


怎样将内容读出来,每行放到一个数组中
...全文
343 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunnyes2008 2009-05-21
  • 打赏
  • 举报
回复
14楼的写的不错顶一个,FSCANF,觉得不好用,如果字符串中有空格,就结束了.
mhyx_2008 2008-06-18
  • 打赏
  • 举报
回复
再给你一个可以读取一行的函数,此函数可以读取任意长度的一行,缺点是记得用完后要释放内存free

/*---读取文中一行,遇到文件结束返回NULL---*/
char *read_line(FILE *fp)
{
int i=0,len=80;
char ch,*s;
s=(char *)calloc(len,sizeof(char));
while((ch=fgetc(fp))!=EOF)
{
if(ch=='\n')
break;
s[i++]=ch;
if(i==len)
{
len+=20;
s=(char *)realloc(s,len*sizeof(char));
}
}
s[i]='\0';
return(s);
}
/*---此函数并不读取一行末尾的'\n',如果要读取'\n'的话把s[i++]=ch放到if(ch=='\n')之前---*/
mwx285 2008-06-18
  • 打赏
  • 举报
回复
不好意思,没有考虑到空格,制表符
学习…………
mwx285 2008-06-18
  • 打赏
  • 举报
回复

while(fscanf(fp,"%s",buffer)==1)
{
fprintf(stdout,"%s",buffer);
printf("\n");
}

读取一行,输出到屏幕
mhyx_2008 2008-06-18
  • 打赏
  • 举报
回复
FILE *fp;
char buf[1024];

用fscanf(fp,"%s",buf)读,一次读一个单词,也就是说每读到空格,就结束本次读操作。
用fgets(buf,1024,fp)读,一次读一行,也就是说每读到'\n',就结束本次读操作。如果某行的长度大于1023,那么只读1023个字符到buf中。
mwx285 2008-06-18
  • 打赏
  • 举报
回复
"%[^\n]\n“
这个是什么意思?貌似挺神奇的,读取换行符之前的所有字符??
  • 打赏
  • 举报
回复
楼主是要一次将多行文本都读出???
c++里用getline
c里就只能一行一行地读取了……
WEN2222 2008-06-18
  • 打赏
  • 举报
回复
用 fgets()、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
9527他大爷 2008-06-17
  • 打赏
  • 举报
回复
fgets()..............
shancao 2008-06-17
  • 打赏
  • 举报
回复
六楼的不错。支持。搂主有问题可以自己察看msdn这样进步才会大
winxxpSoft 2008-06-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yuzl32 的回复:]
C/C++ code
#include <stdio.h>

int main(void)
{
char arr[20][100] = {'\0'};
int ret = 0, index = 0;
FILE *stream;

if( (stream = fopen( "test1.txt", "r" )) == NULL )
printf( "The file 'test1.txt' was not opened\n" );
else
printf( "The file 'test1.txt' was opened\n" );

do
{
ret = fscanf(stream,"%[^\n]\n",arr[index++]);
}whi…
[/Quote]
楼上兄弟,这程序有几个错误!
1 fopen 出错还接着运行!
2 fopen完后没有fclose
yuzl32 2008-06-17
  • 打赏
  • 举报
回复

#include <stdio.h>

int main(void)
{
char arr[20][100] = {'\0'};
int ret = 0, index = 0;
FILE *stream;

if( (stream = fopen( "test1.txt", "r" )) == NULL )
printf( "The file 'test1.txt' was not opened\n" );
else
printf( "The file 'test1.txt' was opened\n" );

do
{
ret = fscanf(stream,"%[^\n]\n",arr[index++]);
}while(ret != 0 && ret != EOF);

//output
while(index >= 0)
{
printf("%s\n",arr[index--]);
}

return 0;
}
animalgogogo 2008-06-17
  • 打赏
  • 举报
回复
fscanf(fp,"%s%s",buf1,buf2);
strcat(buf1,buf2);
注意buf1,buf2的空间要开大些
ivan_town 2008-06-17
  • 打赏
  • 举报
回复
FILE *fp;
char c[80];//从文件读取的每行数据
fp=fopen("filename",r);
fgets(c,80,fp);
------------------
这是读一行的代码
lixun_21 2008-06-17
  • 打赏
  • 举报
回复
fgets(buff,sizeof(buff),fp);
renzu 2008-06-17
  • 打赏
  • 举报
回复
修改如下:
test1.txt:内容
test1 Hello1
test1 Hello2
test1 Hello3


怎样将内容读出来,每行放到一个数组中
iu_81 2008-06-17
  • 打赏
  • 举报
回复
fgetline

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧