按结构设计给的轴径尺寸检索所需的平键尺寸

问题描述:


将下表中的平键和键槽尺寸,建立数据文件;利用所建数据文件,按结构设计给的轴径尺寸检索所需的平键尺寸。

平键尺寸与键槽尺寸(GB/T1095–1993)


下列代码只对表中的前5组数据进行测试

程序清单:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
#include <stdlib.h>
struct key{ //数据文件结构体
float d1, d2, b, h, t, t1;
};
struct key key[100]; //数据文件结构体,做多100组数据
float d1, d2, b, h, t, t1;
void write(){
int i;
FILE *fp;
if( (fp=fopen("keydat", "w"))==NULL ){ //二进制写方式打开文件keydat,返回NULL则打开失败
printf("cannot open the data file\n");
exit(0);
}
for(i=0;i<5;i++){
printf("请输入对应的值:d1, d2, b, h, t, t1\n");
scanf("%f,%f,%f,%f,%f,%f",&key[i].d1,&key[i].d2,&key[i].b,&key[i].h,&key[i].t,&key[i].t1);
fwrite(&key[i],sizeof(struct key),1,fp);
}
fclose(fp);
}
void read(){
float d;
int i;
FILE *fp;
while(1){
printf("input the shaft diameterd=");
scanf("%f",&d);
if(d<8 || d>30){
printf("The diameter dis not inrage,input again!\n");
}else{
if( (fp=fopen("keydat","r"))==NULL ){
printf("cannot open the data file\n");
exit(0);
}else{
for(i=0;i<5;i++){
fread(&key[i], sizeof(struct key),1,fp);
if(d>key[i].d1 && d <= key[i].d2){
printf("the key:b=%f,h=%f,t=%f,t1=%f", key[i].b, key[i].h, key[i].t, key[i].t1);
break;
}
}
fclose(fp);
}
}
break;
}
}
void main(){
write();
read();
}

运行结果:


参考:


含义 “r” 打开,只读; “w” 打开,文件指针指到头,只写;
“a” 打开,指向文件尾,在已存在文件中追加;
“rb” 打开一个二进制文件,只读;
“wb” 打开一个二进制文件,只写;
“ab” 打开一个二进制文件,进行追加 ;
“r+” 以读/写方式打开一个已存在的文件;
“w+” 以读/写方式建立一个新的文本文件 ;
“a+” 以读/写方式打开一个文件文件进行追加 ;
“rb+” 以读/写方式打开一个二进制文件;
“wb+” 以读/写方式建立一个新的二进制文件 ;
“ab+” 以读/写方式打开一个二进制文件进行追加