c语言如何多次读同一个txt文件

c语言如何多次读同一个txt文件,第1张

因为你第一次就把文件里指针移至尾部,需要使用fseek函数进行跳转。比如“起始点”参数设置为SEEK_SET 即可将文件指针挪到文件开头位置再次读取,反复这样 *** 作,即可实现重复读取文件。

C++用fstream中的getline()函数读取一行文件内容

C语言可用fgets()函数读取一行文件内容

两者有一些区别:

1、fgest()读到回车结束,回车符也会写到接收buf中

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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11936445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存