高级语言程序设计第十次个人作业
高级语言程序设计第十次个人作业
- 作业课程:2025高级语言程序设计(福州大学)
- 作业要求:高级语言程序设计第十次个人作业
- 学号:052406103
- 姓名:叶银珍
作业内容
(1)编写一个程序,将一个文件的内容复制到另一个文件中。
#include <stdio.h>
#include <string.h>
int main() {
FILE * fp1,*fp2;
char c;
fp1 = fopen(filename1, "r");
if (fp1 == NULL) {
printf("无法打开输入文件 %s\n", filename1);
return 1;
}
fp2 = fopen(filename2, "w");
if (fp2 == NULL) {
printf("无法打开输出文件 %s\n", filename2);
fclose(fp1);
return 1;
}
while(!feof(fp1)){
c=fgetc(fp1);
fputc(c,fp2);
}
fclose(fp1);
fclose(fp2);
printf("复制完成");
return 0;
}



(2)编写一个程序,统计一个文本文件中的字符数。
#include <stdio.h>
#include <string.h>
int main() {
FILE * fp1;
char filename[]="in.txt";
char c;
int n=0;
fp1 = fopen(filename1, "r");
if (fp1 == NULL) {
printf("无法打开输入文件 %s\n", filename1);
return 1;
}
while(!feof(fp1)){
c=fgetc(fp1);
if(c!='\n') n++;
}
fclose(fp1);
printf("%s中有%d个字符",filename,n);
return 0;
}


(3)编写一个程序,读取一个文本文件的内容,并在控制台上显示。
#include <stdio.h>
#include <string.h>
int main() {
FILE * fp1;
char filename[]="in.txt";
char c;
fp1 = fopen(filename1, "r");
if (fp1 == NULL) {
printf("无法打开输入文件 %s\n", filename1);
return 1;
}
printf("%s:\n",filename);
while(!feof(fp1)){
c=fgetc(fp1);
printf("%c",c);
}
fclose(fp1);
return 0;
}


(4)编写一个程序,向一个文本文件的末尾追加一行文本。
#include <stdio.h>
#include <string.h>
int main() {
FILE * fp1;
char filename[]="in.txt";
char c[]="\nhello hisoka";
fp1=fopen(filename,"a");
if (fp1 == NULL) {
printf("无法打开输入文件 %s\n", filename1);
return 1;
}
fprintf(fp1,"%s",c);
fclose(fp1);
return 0;
}



(5)编写一个程序,读取一个文本文件,删除文件中的特定行(例如,包含特定单词的行),并将结果保存到新文件中。
#include <stdio.h>
#include <string.h>
#define Max_size 256
int main() {
FILE *fp1;
FILE *fp2;
char filename1[] = "in.txt";
char filename2[] = "out.txt";
char keyword[] = "hello"; // 要删除的特定单词
int key_len = strlen(keyword);
char buffer[Max_size];
int i, j, match;
fp1 = fopen(filename1, "r");
if (fp1 == NULL) {
printf("无法打开输入文件 %s\n", filename1);
return 1;
}
fp2 = fopen(filename2, "w");
if (fp2 == NULL) {
printf("无法打开输出文件 %s\n", filename2);
fclose(fp1);
return 1;
}
while (fgets(buffer, sizeof(buffer), fp1) != NULL) { // 只要buffer足够大可以读取直到换行符 ,实现逐行读取文件
int line_len = strlen(buffer);
int found = 0; // 标记是否找到关键词
for (i = 0; i <= line_len - key_len; i++) {
match = 1;
for (j = 0; j < key_len; j++) {
if (buffer[i + j] != keyword[j]) {
match = 0;
break;
}
}
if (match) {
found = 1;
break;
}
}
// 如果行中没有找到关键词,写入输出文件
if (!found) {
fputs(buffer, fp2);
}
}
fclose(fp1);
fclose(fp2);
printf("处理完成!结果已保存到 %s\n", filename2);
return 0;
}



(6)计算并显示一个文件的大小(以字节为单位),要求使用ftell。
#include <stdio.h>
#include <string.h>
#define Max_size 256
int main() {
FILE *fp1;
char filename1[] = "in.txt";
fp1 = fopen(filename1, "r");
if (fp1 == NULL) {
printf("无法打开输入文件 %s\n", filename1);
return 1;
}
fseek(fp1,0L,SEEK_END);
int t=ftell(fp1);
fclose(fp1);
printf("文件 %s的大小为:%d\n", filename1,t);
return 0;
}


(7)有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"student.txt"中。
#include <stdio.h>
#include <string.h>
#define Max_size 256
struct students{
char name[50];
int id;
float score[3];
};
int main() {
FILE *fp1;
char filename1[] = "students.txt";
students stu;
printf("请输入学生的学号,姓名,三门课成绩:");
scanf("%d %s %f %f %f",&stu.id,stu.name,&stu.score[0],&stu.score[1],&stu.score[2]);
fp1 = fopen(filename1, "w");
if (fp1 == NULL) {
printf("无法打开输入文件 %s\n", filename1);
return 1;
}
float avg= (stu.score[0]+stu.score[1]+stu.score[2])/3.0;
fprintf(fp1,"%d %s %f %f %f %f\n", stu.id,stu.name,stu.score[0],stu.score[1],stu.score[2],avg);
fclose(fp1);
printf("学生信息录入完成\n");
return 0;
}


浙公网安备 33010602011771号