文件的随机访问与多文件项目

C/C++学习笔记之十四

上一节我们讲到文件的读写存储机制,这一节将讨论文件的随机访问、按行存储与多文件项目。

例1:按行存储

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//数据的按行存储
int load1(){
const char *filename="F:/HelloWorld.dat";
FILE *fp=fopen(filename,"rb");
if(fp==NULL){
printf("Cannot open this file!");
system("pause");
return -1;
}
char buff[512];//最大宽大512个字节
while(!feof(fp)){
char *line=fgets(buff,512,fp);
if(line){
int i=0;

//去掉前缀ip与port
while(line[i]!='='){
i++;
}line=line+i+1;
printf("gots:%s",line);
}
}
fclose(fp);
return 0;
}
int save1(){
const char *filename="F:/HelloWorld.dat";
FILE *fp=fopen(filename,"wb");
if(fp==NULL){
printf("Cannot open this file!");
system("pause");
return -1;
}
char ip[]="192.168.1.100";
int port=8080;
char line[256];
sprintf(line,"ip=%s\n",ip);//ip解析到line字符串中,"\n"表示换行
fwrite(line,1,strlen(line),fp);
sprintf(line,"port=%d\n",port);//port解析到line中
fwrite(line,1,strlen(line),fp);
fclose(fp);
return 0;
}
int main(){

save1();
load1();
return 0;

}

例2:随机访问

fseek(fp,5*sizeof(char),SEEK_SET);
char a;
fread(&a,1,sizeof(char),fp);
printf("a:%c\n",a);

//读取了第6个字符

例3:多文件项目

Student.h文件:

struct Student{
int number;
char name[10];
int score;
};

//外部函数实现

#include<stdio.h>
#include<stdlib.h>
int b=3;
double getArea(double r){
return 3.14*r*r;
}
int sum(int a,int b){

return a+b;
}

main.cpp:

#include<stdio.h>
#include<stdlib.h>
#include "Student.h"
#include<math.h>
extern int b;
extern double getArea(double r);
int sum(int a,int b);
//代码 多文件项目.exe 1.2 8
int main(int argc,char *argv[]){

Student stu;
printf("sum=%d\n",sum(3,4));
printf("b=%d\n",b);
double a=0;
printf("请输入半径:");
scanf("%1f",&a);
double result=getArea(a);
printf("面积为:%.31f\n",result);
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值