Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
芜湖石乐志
C ProgrammingHomework-FifthEdition
提交
042a2bb6
C
C ProgrammingHomework-FifthEdition
项目概览
芜湖石乐志
/
C ProgrammingHomework-FifthEdition
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
C ProgrammingHomework-FifthEdition
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
042a2bb6
编写于
11月 09, 2023
作者:
芜湖石乐志
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Upload New File
上级
623a7d2c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
103 addition
and
0 deletion
+103
-0
Chapter10_File/test8.c
Chapter10_File/test8.c
+103
-0
未找到文件。
Chapter10_File/test8.c
0 → 100644
浏览文件 @
042a2bb6
/*
8.将第7题结果仍存入原有的 stu_sort (这里是test8stud_sort.txt)文件而不另建立新文件(一开始的test8stud_sort.txt文件里的数据是第6题文件的数据)。
*/
#include <stdio.h> //包含头文件
#include <stdlib.h> //包含头文件
#include <string.h>
#define N 5
//声明一个结构体类型struct student
struct
student
{
char
num
[
10
];
char
name
[
10
];
float
score
[
3
];
float
ave
;
//存放平均分
}
Stu
[
N
],
s
,
*
p
;
//定义一个struct student类型的结构体数组,有6个struct student类型的结构体元素,同时定义一个结构体指针
int
main
()
{
void
print
(
struct
student
student
[],
int
n
);
//函数声明
void
readfile
(
char
*
filename
,
char
*
way
,
struct
student
*
array
,
int
n
);
//读取文件函数声明
void
inputfile
(
char
*
filename
,
char
*
way
,
struct
student
*
array
,
int
n
);
printf
(
"input num:"
);
scanf
(
"%s"
,
s
.
num
);
printf
(
"input name:"
);
scanf
(
"%s"
,
s
.
name
);
for
(
int
j
=
0
;
j
<
3
;
j
++
){
printf
(
"input student's score %d:
\n
"
,
j
+
1
);
scanf
(
"%f"
,
&
s
.
score
[
j
]);
}
s
.
ave
=
(
s
.
score
[
0
]
+
s
.
score
[
1
]
+
s
.
score
[
2
])
/
3
.
0
;
p
=&
s
;
//用结构体指针指向结构体变量,好调用函数
readfile
(
"test8stud_sort.txt"
,
"r"
,
Stu
,
N
);
print
(
Stu
,
N
);
int
i
,
t
;
for
(
i
=
0
;
s
.
ave
<
Stu
[
i
].
ave
&&
i
<
N
;
i
++
);
//执行空语句来计数i,找到插入位置
inputfile
(
"test8stud_sort.txt"
,
"w"
,
Stu
,
i
);
//把比插入的学生的平均成绩大的先写入文件
inputfile
(
"test8stud_sort.txt"
,
"a"
,
p
,
1
);
//用追加形式打开文件,不然会刷新文件内容,然后把要插入的学生写入文件
inputfile
(
"test8stud_sort.txt"
,
"a"
,
&
Stu
[
i
],
N
-
i
);
//再把剩下的数据也写入文件
system
(
"pause"
);
return
0
;
}
//输出结构体变量
void
print
(
struct
student
student
[],
int
n
)
{
int
i
,
j
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
printf
(
"%s "
,
student
[
i
].
num
);
printf
(
"%s "
,
student
[
i
].
name
);
for
(
j
=
0
;
j
<
3
;
j
++
)
printf
(
" %-5.2f "
,
student
[
i
].
score
[
j
]);
printf
(
" %-5.2f "
,
student
[
i
].
ave
);
printf
(
"
\n
"
);
}
}
//从文件读取
void
readfile
(
char
*
filename
,
char
*
way
,
struct
student
*
array
,
int
n
)
{
FILE
*
fp
;
//定义文件指针
if
((
fp
=
fopen
(
filename
,
way
))
==
NULL
){
printf
(
"can't open file!
\n
"
);
system
(
"pause"
);
exit
(
0
);
}
int
i
,
j
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
fscanf
(
fp
,
"%s"
,
array
[
i
].
num
);
//格式读取文件数据到结构体变量中
fscanf
(
fp
,
"%s"
,
array
[
i
].
name
);
//格式读取文件数据到结构体变量中
for
(
j
=
0
;
j
<
3
;
j
++
)
fscanf
(
fp
,
" %f "
,
&
array
[
i
].
score
[
j
]);
//格式读取文件数据到结构体变量中
fscanf
(
fp
,
" %f "
,
&
array
[
i
].
ave
);
}
fclose
(
fp
);
}
//写入文件
void
inputfile
(
char
*
filename
,
char
*
way
,
struct
student
*
array
,
int
n
)
{
FILE
*
fp
;
//定义文件指针
if
((
fp
=
fopen
(
filename
,
way
))
==
NULL
){
printf
(
"can't open file!
\n
"
);
system
(
"pause"
);
exit
(
0
);
}
int
i
,
j
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
fprintf
(
fp
,
"%s "
,
array
[
i
].
num
);
//格式输出数据到文件
fprintf
(
fp
,
"%s "
,
array
[
i
].
name
);
//格式输出数据到文件
for
(
j
=
0
;
j
<
3
;
j
++
)
fprintf
(
fp
,
" %-5.2f "
,
array
[
i
].
score
[
j
]);
//格式输出数据到文件中
fprintf
(
fp
,
" %-5.2f "
,
array
[
i
].
ave
);
fprintf
(
fp
,
"
\n
"
);
//输出换行符到文件中
}
fclose
(
fp
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录