当前位置:首页 » 编程语言 » c语言怎么读文件
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言怎么读文件

发布时间: 2022-02-10 12:21:24

1. c语言如何读取文件

C语言读取文件的具体步骤如下:

我们需要准备的材料分别是:电脑、C语言。

1、首先我们打开需要读取的文件,点击打开左上角文件中的“另存为”。

2. C语言如何读取文件

文件流指针应打文件,要同操作两文件,所要用两文件流指针
,像要同操作两箱.
程序理解:
两箱,fp1,fp2;
打箱fp1,fp2,拿1024东西看,同放第二箱fp2,至箱东西完全拿,关闭两箱.
例都差,看看stdlibf函数,C文件操作:
FILL
*pf;
//声明指针,指针数组
FILE
pf[2]

FILE
**pf;
pf
=fopen();
fread()
or
fwrite()
...
...
//操作文件
fclose(pf)
//关闭文件

3. C语言文件的文本怎么读取

根据你给的文件保存的数据的格式,我猜测每一行是一个学生的信息,格式如下:

序号 姓名 成绩1 成绩2 成绩3 ...

知道了题意和题目要求,那么一切将会变得简单起来,请看代码。

#include<stdio.h>

#defineREAD_FILE"data.txt"/*要读取的文件的名字*/
#defineWRITE_FILE"T_data.txt"/*要写入的文件的名字*/
#defineSTU_NUM10/*最大学生人数*/
#defineMAX_LEN50/*一行的最大字符数*/
/*
*获取总分函数
*/
intget_sum(charconst*msg){

intsum=0;
inttmp;
/*
*遍历一行字符
*/
while(*msg!=''){

/*
*以空格为一项成绩的分隔标志
*/
tmp=0;
while(*msg!=''&&*msg!=''){
/*
*char类型数字转int类型数字
*/
tmp=(tmp*10)+((*msg)-'0');
msg++;
}
/*
*求总和
*/
sum+=tmp;
if(*msg==''){

break;
}
msg++;
}
returnsum;
}

intmain(void){

FILE*rfp,*wfp;/*声明读取/写入文件指针*/
charstudent[STU_NUM][MAX_LEN];/*存放读取到的数据缓存数组*/
charch;
intsum[STU_NUM];/*成绩总和*/
inti=0;
intj=0;
intk=0;
rfp=fopen(READ_FILE,"r");/*打开数据文件*/
if(rfp==NULL){

perror(READ_FILE);
exit(1);
}
for(i=0;i<STU_NUM;i++){

sum[i]=0;
}
/*
*逐个字符读取文件的内容,
*直至遇到文件结束符为止。
*/
i=0;
while((ch=fgetc(rfp))!=EOF){
/*
*遇到换行符表示已经读取完一个学生的资料;
*否则继续将数据写入缓存数组中。
*/
if(ch==' '){

student[i][j]='';
j=0;
i+=1;
}else{

student[i][j++]=ch;
}
}
student[i][j]='';
wfp=fopen(WRITE_FILE,"w");
/*
*开始分析数据
*根据文件存放数据的格式,从下标为2的位置开始分析数据。
*当遇到空格时证明后面的数据是成绩,每一科成绩分数均以空格分开。
*printf是显示出来。
*fprintf是写入另一个文件。
*/
for(j=0;j<=i;j++){

k=2;
printf("%c%c",student[j][0],student[j][1]);
fprintf(wfp,"%c%c",student[j][0],student[j][1]);
while(student[j][k]!=''){

printf("%c",student[j][k]);
fprintf(wfp,"%c",student[j][k]);
k++;
}
printf("'ssumofscoresumis");
fprintf(wfp,"'ssumofscoresumis");
sum[j]=get_sum(&student[j][k]);
printf("%d ",sum[j]);
fprintf(wfp,"%d ",sum[j]);
}
/*
*记得关闭文件哦。
*/
fclose(rfp);
fclose(wfp);
return0;
}

以下是运行结果:

这个程序仅仅是针对你的题目要求来的,文件存放的数据格式不能更改,否则会出错。每一行必须以回车键结束,最后一行的最后一个字符之后什么也不能有。我尽量以你看得懂的方法来写,关键部分都带有注释,有问题不要追问了,自己多思考思考,实在解决不来还是很欢迎可以追问的哦,哈哈哈!!!

4. 用C语言如何读文件

#include <stdio.h>
#include <dir.h>

int main(void)
{
struct ffblk ffblk;
int done;
printf("Directory listing of *.*/n");
done = findfirst("*.*",&ffblk,0);
while (!done)
{
printf(" %s/n", ffblk.ff_name);
done = findnext(&ffblk);
}

return 0;
}
把它放在目录下,运行即可!注:若没有dir.h,就换个编译器,像DEVCPP,那头文件vc没有!

5. c语言如何读取文件并输出

c语言读取文件并输出的代码如下:

#include<stdio.h>

inta;

charb,c[100];

intmain(){

FILE*fp1=fopen("input.txt","r");//打开输入文件

FILE*fp2=fopen("output.txt","w");//打开输出文件

if(fp1==NULL||fp2==NULL){//若打开文件失败则退出

puts("不能打开文件!");

return0;

fscanf(fp1,"%d",&a);//从输入文件读取一个整数

b=fgetc(fp1);//从输入文件读取一个字符

fgets(c,100,fp1);//从输入文件读取一行字符串

printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数

fputs(c,fp2);//向输出文件写入一行字符串

fputc(b,fp2);//向输出文件写入一个字符

fprintf(fp2,"%d",a);//向输出文件写入一个整数

fclose(fp1);//关闭输入文件

fclose(fp2);//关闭输出文件,相当于保存

return0;

C语言中使用fopen()函数实现文件的读取,使用fgetc()函数读取文件中的字符,使用fclose()实现文件的关闭,注意:打开文件流必须要关闭文件流,不然会持续占用计算机内存资源。



(5)c语言怎么读文件扩展阅读:

fopen函数

C语言中fopen函数可以两个参数,fopen(const char *filename, const char *mode)。

第一个参数filename:这是 C 字符串,包含了要打开的文件名称。

第二个参数mode:这是 C 字符串,包含了文件访问模式。

6. C语言读文件

#include <stdio.h>
#include <string.h>

void main()
{
char str[200];
FILE *fp;

if((fp=fopen("test.txt","rt"))==NULL)
{
printf("cannot open file\n");
return;
}
while (fgets(str,200,fp)) //读取一行,并判断文件是否结束
{
printf("%s",str);
}
fclose(fp);
}

7. c语言关于文件的读

帮你一把。
两个问题:
1.feof()函数是个比较特殊的函数,到达文件末尾时它要读2次才会知道文件到达末尾,然后退出。所以第一次读到的文件位置结尾符号被当做字符读入,同时把上一次读入的数据再写一次到新文件中,接着第二次读时判断为结尾,退出。
因为feof仅仅是个宏,它仅仅读取了上次读写动作发生后置于FILE 结构的一个标志位。所以第一次读到文件结尾符时FILE中的标志位还没有来得及更新。只有再进行一次读写它才会看到第一次读到的结尾符号,从而返回true给FILE结构来更新其中的文件是否到达结尾的那个标志位。这与系统FILE 结构的实现有关。
知道了原因,解决办法就很简单了:先读然后再判断,这样就不会到最后多读一次。比如对读字符就是
char ch;
ch=fgetc(in);/*先读再判断,而不是先不读直接判断*/
while(!feof(in))
{
fputc(ch,out);
ch=fgetc(in);
}
而不是:
while(!feof(in))//这个最后会多读写一次数据(当最后一行是空行)或会多读写一次文件结尾标志符(是个乱码)
{
fputc(fgetc(in),out);
}
同理在c++中的类成员函数eof()等也是如此,碰到了也要注意。(这个问题很多人没搞清楚)

2.fwrite(buffer,size,count,fp)函数本身的返回值为整数,返回的是实际读写的文件的块数。如果返回值小于要读写的块数count表明读写错误或已到达文件末尾。所以一次读写一个数据块之间用判断语句就可以了:
if(fread(p,sizeof(house),1,fp)==1)//表示读写正确或文件未到末尾
所以本题除了你的第二种方法外还可以这样:
q=(luser)malloc(sizeof(user));
while(fread(q,sizeof(user),1,rp)==1)//直接用fread()函数的返回值判断是否到文件末尾
{
q->next=lhead->next;
lhead->next=q;
q=(luser)malloc(sizeof(user));
}

8. C语言 如何一行行读文件

#include<stdio.h>
#include<stdlib.h>

voidmain()
{
charb[25];
//打开文件
FILE*fp;
fp=fopen("D:\a.txt","r");
//获取文件内容,每次读一个字符,包括空格
for(inti=0;i<25;i++)
//fscanf(fp,"%c",&b[i]);
fgets(&b[i],2,fp);
fclose(fp);

//显示读取到的内容
for(inti=0;i<25;i++)
printf("%c",b[i]);
}

9. C语言怎样读文件

没太看明白你的意思,是要复制这个文件到别的地方么?
C语言没有这样的标准库函数,你可以按照这样的思路复制文件:
以二进制模式打开源文件进行读取,打开目标文件进行写入
读取源文件中的一个字符,如过没有达到源文件的末尾,就把这个字符写入目标文件
当达到源文件末尾时关闭文件

有变量的文件名可以使用sprintf函数得到文件路径之后再打开
例如
int a = 2;
char *filePath[256];
想打开 a.txt(2.txt) 的话,用sprintf(filePath, "%d.txt", a); filePath的值就是2.txt了

10. c语言中如何读文件名字

好像有函数,但是忘了,
实在不行,你在C语言里调用DOS的dir命令写到一个文件里,然后再读那个文件。
调用DOS为:
system("dir
/ad
/b
>fold.txt");
/*这个是文件夹列表*/
system("dir
/a-d
/b
>file.txt");
/*这个是文件列表*/
你再读一下那两件文件。
办法是有点笨。
你自己再打开那两个文本文件看一下,里面的内容吧。