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

c语言的文件读法

发布时间: 2022-09-08 15:08:25

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;
}

以下是运行结果:

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

㈡ C语言读文件按列读怎么读读txt文件

可以用fscanf

㈢ 【C语言】求问怎么读txt文件

下面是我的代码,带有注释,如果有不懂的请继续向我追问:
#include <stdio.h>
main()
{
//首先使用FILE打开文件
FILE *f=fopen("1.txt","r");
//用fscanf读取
int event[1000],t[1000],i=0;
while(!feof(f))
{
fscanf(f,"%d%d",event[i],t[i]);
i++;
}
//关闭文件
fclose(f);
//输出
for(int m=0;m<i;m++)
printf("%d %d\n",event[m],t[m]);
}
希望我的回答对你有帮助!
^o^

㈣ C语言中文件的读取

c语言提供的标准库中就有文件操作函数

关于文件读取的有


size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream);
intfgetc(FILE*stream);
char*fgets(char*s,intsize,FILE*stream);
intgetc(FILE*stream);
intfscanf(FILE*stream,constchar*format,...);
intvfscanf(FILE*stream,constchar*format,va_listap);
ssize_tgetline(char**lineptr,size_t*n,FILE*stream);
ssize_tgetdelim(char**lineptr,size_t*n,intdelim,FILE*stream);

读取一个文件的步骤一般为

1、打开文件

2、读取

3、关闭文件


打开文件的方法是使用fopen函数

FILE*fopen(constchar*path,constchar*mode);

其中第一个参数为要打开的文件的路径

第二个表示以何种方式打开

包括

r 只读取打开

r+ 读写

w 只写

w+ 读写

a 追加

a+ 可读,追加

b 以二进制方式打开


关闭文件的方法是使用fclose函数

intfclose(FILE*fp);


一个简单的示例代码如下

#include<stdio.h>

intmain(intargc,char**argv)
{
FILE*fp;
charbuf[512];
size_tn;

if((fp=fopen(argv[1],"rb"))==NULL)
{
printf("打开文件出错! ");
return-1;
}

while(!feof(fp))
{
n=fread(buf,sizeof(char),sizeof(buf)-1,fp);
buf[n]='';
printf("%s",buf);
}

fclose(fp);
printf(" ");

return0;
}


不同的操作系统也会提供相应的操作文件的接口

也有相应的文件操作库也会提供相应接口

不过读取文件的步骤基本是一致的

㈤ C语言文件读取

你好!!
fscanf 函数,读文件的时候,是遇到空格结束一次读取的,你文件每行记录不确定;

不能批量格式读取了,只能采用每次读取一个的方式完成!

㈥ 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()实现文件的关闭,注意:打开文件流必须要关闭文件流,不然会持续占用计算机内存资源。



(6)c语言的文件读法扩展阅读:

fopen函数

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

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

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

㈦ C语言 如何一行行读文件

#include
#include
void main()
{
char b[25];
//打开文件
FILE *fp;
fp = fopen("D:\\a.txt","r");
//获取文件内容,每次读一个字符,包括空格
for(int i=0;i<25;i++)
//fscanf(fp,"%c",&b[i]);
fgets(&b[i],2,fp);
fclose(fp);
//显示读取到的内容
for(int i=0;i<25;i++)
printf("%c",b[i]);
}

㈧ C语言读文件按列读怎么读

比如想要把第四,五列放在c[i], d[i]中。
fscanf(fp, "%*d%*d%%*d%d%d", &c[i], &d[i]); // 这样就是只读第四,第五列
fscanf(fp, "%*d%*d%%d%d%d", &c[i], &d[i]); // 这样就是只读第三,第四,第五列

由于 %*d 是读入后,忽略的意思,也就是,读入第一、第二列后都忽略了。

㈨ C语言读取文件内容,按行读

C语言逐行读取文件内容 ,参考代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineMAX_LINE1024
intmain()
{
charbuf[MAX_LINE];/*缓冲区*/
FILE*fp;/*文件指针*/
intlen;/*行字符个数*/
if((fp=fopen("test.txt","r"))==NULL)
{
perror("failtoread");
exit(1);
}
while(fgets(buf,MAX_LINE,fp)!=NULL)
{
len=strlen(buf);
buf[len-1]='';/*去掉换行符*/
printf("%s%d ",buf,len-1);
}
return0;
}