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

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C

这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2024C/homework/13314

学号:102300108

姓名:陈茜蕾

1

#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)

void copy(FILE* p1, FILE* p2) {
    char line[20]; // 假设每行至多20个字符
    while (fgets(line, sizeof(line), p1) != NULL) {
        fputs(line, p2); // 完成复制
    }
}

int main() {
    // 打开文件用于写入内容
    FILE* p1 = fopen("test1.txt", "w");
    if (p1 == NULL) {
        printf("无法打开 test1.txt 文件!\n");
        return 1;
    }
    FILE* p2 = fopen("test2.txt", "w");
    if (p2 == NULL) {
        printf("无法打开 test2.txt 文件!\n");
        fclose(p1);
        return 1;
    }

    // 向 test1.txt 写入内容
    fputs("hello\nworld\n!", p1);

    // 关闭 p1,以便下文使用
    fclose(p1);

    // 重新打开 p1 用于读取,p2 用于写入复制内容
    p1 = fopen("test1.txt", "r");
    if (p1 == NULL) {
        printf("无法重新打开 test1.txt 文件!\n");
        fclose(p2);
        return 1;
    }
    p2 = fopen("test2.txt", "w");  // 清空 test2.txt 文件
    if (p2 == NULL) {
        printf("无法重新打开 test2.txt 文件!\n");
        fclose(p1);
        return 1;
    }

    // 复制内容
    copy(p1, p2);

    // 关闭文件
    fclose(p1);
    fclose(p2);

    // 打开文件以打印验证内容
    p1 = fopen("test1.txt", "r");
    p2 = fopen("test2.txt", "r");

    if (p1 == NULL || p2 == NULL) {
        printf("无法打开文件以验证内容!\n");
        return 1;
    }

    char line[20];
    printf("test1.txt 内容:\n");
    while (fgets(line, sizeof(line), p1) != NULL) {
        printf("%s", line);
    }

    printf("\ntest2.txt 内容:\n");
    while (fgets(line, sizeof(line), p2) != NULL) {
        printf("%s", line);
    }

    // 关闭文件
    fclose(p1);
    fclose(p2);

    return 0;
}

2

#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)

int caculate(FILE* p1) {
    int count = 0;
    while (fgetc(p1)!=EOF) {
        count++;
    }
    return count;
}

int main() {
    // 打开文件用于写入内容
    FILE* p1 = fopen("test1.txt", "w");
    if (p1 == NULL) {
        printf("无法打开 test1.txt 文件!\n");
        return 1;
    }

    // 向 test1.txt 写入内容
    fputs("hello\nworld\n!", p1);

    // 关闭 p1,以便下文使用
    fclose(p1);

    // 重新打开 p1 用于读取
    p1 = fopen("test1.txt", "r");
    if (p1 == NULL) {
        printf("无法重新打开 test1.txt 文件!\n");
        return 1;
    }
    
    int cnt = caculate(p1);
    // 关闭文件
    fclose(p1);
    printf("该文件字符数为:%d", cnt);
    return 0;
    
}

3

#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)

void print(FILE* p1) {
    char c;
    while ((c = fgetc(p1)) != EOF) {
        printf("%c", c);
    }
}

int main() {
    // 打开文件用于写入内容
    FILE* p1 = fopen("test1.txt", "w");
    if (p1 == NULL) {
        printf("无法打开 test1.txt 文件!\n");
        return 1;
    }

    // 向 test1.txt 写入内容
    fputs("hello\nworld\n!", p1);

    // 关闭 p1,以便下文使用
    fclose(p1);

    // 重新打开 p1 用于读取
    p1 = fopen("test1.txt", "r");
    if (p1 == NULL) {
        printf("无法重新打开 test1.txt 文件!\n");
        return 1;
    }
    
    print(p1);
    fclose(p1);
    return 0;
    
}

4

#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)
void print(FILE* p1) {
    char c;
    while ((c = fgetc(p1)) != EOF) {
        printf("%c", c);
    }
}
int main() {
    // 打开文件用于写入内容
    FILE* p1 = fopen("test1.txt", "w");
    if (p1 == NULL) {
        printf("无法打开 test1.txt 文件!\n");
        return 1;
    }

    // 向 test1.txt 写入内容
    fputs("hello\nworld\n!\n", p1);
    
    // 关闭 p1,以便下文使用
    fclose(p1);

    // 重新打开 p1 用于追加
    p1 = fopen("test1.txt", "a");
    if (p1 == NULL) {
        printf("无法重新打开 test1.txt 文件!\n");
        return 1;
    }

    fputs("ooooooo!\n", p1);
    fclose(p1);

    p1 = fopen("test1.txt", "r");
    print(p1);
    fclose(p1);
    return 0;
    
}

5

#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)
void print(FILE* p1) {
    char c;
    while ((c = fgetc(p1)) != EOF) {
        printf("%c", c);
    }
}
int main() {
    // 打开文件用于写入内容
    FILE* p1 = fopen("test1.txt", "w");
    FILE* p2 = fopen("test2.txt", "w");
    if (p1 == NULL) {
        printf("无法打开 test1.txt 文件!\n");
        return 1;
    }

    if (p2 == NULL) {
        printf("无法打开 test2.txt 文件!\n");
        fclose(p1);
        return 1;
    }
    // 向 test1.txt 写入内容
    fputs("hello\nworld\n!\n", p1);
    fputs("I like apples.\n", p1);
    
    // 关闭 p1,以便下文使用
    fclose(p1);

    // 重新打开 p1 用于读取
    p1 = fopen("test1.txt", "r");

    char line[20];
    while (fgets(line, 20, p1)) {
        //指定查找apples
        if (strstr(line, "apples")==NULL) {
            fputs(line, p2);
        }
    }

    fclose(p1);
    fclose(p2);

    p2 = fopen("test2.txt", "r");
    print(p2);
    fclose(p2);
    return 0;
    
}

6

#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)

int main() {
    // 打开文件用于写入内容
    FILE* p1 = fopen("test1.txt", "w");
    if (p1 == NULL) {
        printf("无法打开 test1.txt 文件!\n");
        return 1;
    }

    // 向 test1.txt 写入内容
    fputs("hello\nworld\n!\n", p1);
    fputs("I like apples.\n", p1);
 
    fclose(p1);

    p1 = fopen("test1.txt", "r");
    if (p1 == NULL) {
        printf("无法打开 test1.txt 文件!\n");
        return 1;
    }

    fseek(p1, 0, SEEK_END);
    printf("%d\n", ftell(p1));

    fclose(p1);
    return 0;
}

7

#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)
void print(FILE* p1) {
    char c;
    while ((c = fgetc(p1)) != EOF) {
        printf("%c", c);
    }
}
int main() {
    // 打开文件用于写入内容
    FILE* p1 = fopen("student.txt", "w");
    if (p1 == NULL) {
        printf("无法打开 student.txt 文件!\n");
        return 1;
    }

    char name[5][20];
    int grade1[5] = { 0 };
    int grade2[5] = { 0 };
    int grade3[5] = { 0 };
    double average[5] = { 0 };
    for (int i = 0; i < 5; i++) {
        scanf("%s %d %d %d", &name[i], &grade1[i], &grade2[i], &grade3[i]);
        average[i] += (grade1[i] + grade2[i] + grade3[i]) / 3.0;
        fprintf(p1, "%s %d %d %d %lf\n", name[i], grade1[i], grade2[i], grade3[i], average[i]);
    }
    
    fclose(p1);

    p1 = fopen("student.txt", "r");
    if (p1 == NULL) {
        printf("无法打开 student.txt 文件!\n");
        return 1;
    }

    print(p1);

    fclose(p1);
    return 0;
}

总结

没什么大问题但会忘记关文件和检查文件是否为空orz

posted @ 2024-12-02 15:00  取个昵称真的好难  阅读(18)  评论(0编辑  收藏  举报