关于C文件读取的问题
我想在一个文件里接着读取一行字符串内容,包括空格和TAB键,直到回车为止,末尾有\0,不包括回车,fgets这个函数我用了N遍都没用对,到底应该怎么做啊?能不能帮忙写个函...
我想在一个文件里接着读取一行字符串内容,包括空格和TAB键,直到回车为止,末尾有\0,不包括回车,fgets这个函数我用了N遍都没用对,到底应该怎么做啊?
能不能帮忙写个函数,可以读取继续读取文件一行不包括回车而且末尾自动加上\0?急求啊! 展开
能不能帮忙写个函数,可以读取继续读取文件一行不包括回车而且末尾自动加上\0?急求啊! 展开
3个回答
展开全部
要求:文件是文本文件,每行最后以'\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);
}
}
#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);
}
}
展开全部
给你个例子,自己去运行一下,看看效果
#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数据,导致内存泄露了!按我写的那种方法判断退出就好了
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询