高级语言程序设计第十次个人作业

高级语言程序设计第十次个人作业


作业内容

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

屏幕截图 2025-12-19 211020

屏幕截图 2025-12-19 210934

屏幕截图 2025-12-19 210940

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

屏幕截图 2025-12-19 213227

屏幕截图 2025-12-19 213211

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

屏幕截图 2025-12-19 213227

屏幕截图 2025-12-19 214020

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

屏幕截图 2025-12-19 213227

屏幕截图 2025-12-19 220338

屏幕截图 2025-12-19 220446

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

屏幕截图 2025-12-26 184542

屏幕截图 2025-12-26 184535

屏幕截图 2025-12-26 184530

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

屏幕截图 2025-12-26 185040

屏幕截图 2025-12-26 184535

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

屏幕截图 2025-12-26 190403

屏幕截图 2025-12-26 190355

posted @ 2025-12-26 19:07  叶银珍  阅读(0)  评论(0)    收藏  举报