C++用fstream中的getline()函数读取一行文件内容
C语言可用fgets()函数读取一行文件内容
两者有一些区别:
2、getline()可以设定读到哪个字符结束,默认是回车符,但指定的这个字符不会写到接收buf中。
3、fgets()读取数据,如果在读到回车符之前,达到了最大可读个数,则也会返回已读到的buf数据
4、getline()在读数据时,遇到指定字符之前,达到了最大可读个数,则会返回读错误
参考代码如下:
C++版本
#include <iostream>#include <fstream>
using namespace std
int main()
{
ifstream in("test.txt")
char str[1024]={0}
if ( in.fail() )
{
cout << "open file error" <<endl
return -1
}
while( in.getline(str,sizeof(str),'\n' ) )
{
cout << str<<endl
}
in.close()
return 0
}
C语言版本
#include <stdio.h>int main()
{
FILE *fp
fp=fopen("test.txt","r")
char str[1024]
if ( fp == NULL )
{
printf("open file error\n" )
return -1
}
while( fgets(str, sizeof(str), fp ) )
{
printf("%s", str )
}
fclose(fp)
return 0
}
下面的代码是刚刚给你写好的,文件名仅限"a.txt" "b.txt"和"c.txt"#include"stdio.h"#include"stdlib.h"
int main(void)
{
FILE *fp
char filename[]="a.txt"
int i
void *p[3]
long filelen
for(i=0i<3i++)
{
fp=fopen(filename,"rb")
if(!fp){printf("\"%s\"文件打开失败\n",filename)continue}
fseek(fp,0,2)
filelen=ftell(fp)
fseek(fp,0,0)
p[i]=malloc((filelen+1)*sizeof(char))
fread(p[i],filelen*sizeof(char),1,fp)
*((char *)p[i]+filelen)='\0'
fclose(fp)
filename[0]++
}
for(i=0i<3i++)puts(p[i])
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)