关于C文件读取的问题

我想在一个文件里接着读取一行字符串内容,包括空格和TAB键,直到回车为止,末尾有\0,不包括回车,fgets这个函数我用了N遍都没用对,到底应该怎么做啊?能不能帮忙写个函... 我想在一个文件里接着读取一行字符串内容,包括空格和TAB键,直到回车为止,末尾有\0,不包括回车,fgets这个函数我用了N遍都没用对,到底应该怎么做啊?
能不能帮忙写个函数,可以读取继续读取文件一行不包括回车而且末尾自动加上\0?急求啊!
展开
 我来答
cdyzxy
2014-03-21 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3780万
展开全部
要求:文件是文本文件,每行最后以'\n'结束(不以'\0'结束)
#include<stdio.h>
void main()
{ FILE *fp;
char buffer[256];
int i;
if ( fp=fopen("data.txt","w+") )
{ while ( !feof(fp) )
{ fgets(buffer,256,fp);
printf("%s",buffer); //这个buffer中的字符串以'\n'结束
i=0; while ( buffer[i]!='\n' ) i++; //找到'\n'
buffer[i]=0; // 用'\0'覆盖'\n'
printf("%s\n",buffer); //这时buffer存放的字符串不带换行符了
}
fclose(fp);
}
}
更多追问追答
追问
假如要读取多行,第一行如果有前置空格是读取不了空格的!求解决
追答

程序中“w+”应改为“r“

可以读取前导空格的。

如上运行,前3行有前导空格,str4这行没有,都能读取和显示。

kaixingui2012
2014-03-26 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6501万
展开全部
给你个例子,自己去运行一下,看看效果
#include <stdio.h>
int main()
{
char filename[100];
FILE *fp ;
char str[1024]; //数据缓冲区

sprintf( filename , "test.txt" );
fp=fopen( filename , "r" );
if ( fp==NULL )
{
printf("read file error\n" );
return -1;
}
while ( !feof(fp) )
{
if ( fgets( str,sizeof(str), fp )==NULL ) //fgets返回NULL时表示到文件尾或出错了,一般我们认为到文件尾了,结束读入。
break ;
if ( str[strlen(str)-1] == '\n' )//这个str中是含有回车的,如果需要去掉,则需要处理一下
str[strlen(str)-1] = '\0' ;
printf("read:%s\n" , str ) ;
}
fclose(fp);
return 0;
}

你的程序出错在fgets()函数读到文件尾时,你还要继续处理buf数据,导致内存泄露了!按我写的那种方法判断退出就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-20
展开全部
最好发个代码 问题具体来说
更多追问追答
追问
#include
using namespace std;
FILE *fp;
int main();
{
fp=fopen("abc.txt","w+");
fprintf(fp," abc ");
fclose(fp);
fp=fopen("abc.txt","r+");
//这里怎么读取一行
}
追答
#include
FILE *fp;
void main()
{
char m[10];
fp=fopen("abc.txt","w+");
fprintf(fp," abc ");
fclose(fp);
fp=fopen("abc.txt","r+");
fgets(m,9,fp);
printf("%s",m);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式