《C语言及程序设计》实践项目——文件操作

简介: 返回:贺老师课程教学链接【项目1 - 小玩文件】 1、下面程序的功能是统计文本文件abc.txt中的字符个数,请填空将程序补充完整。#include <stdio.h>#include <stdlib.h>int main(){ FILE *fp; if((fp=fopen("abc.txt",_______))==

返回:贺老师课程教学链接

【项目1 - 小玩文件】
1、下面程序的功能是统计文本文件abc.txt中的字符个数,请填空将程序补充完整。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fp;
    if((fp=fopen("abc.txt",_______))==NULL)  //(1)
    {
        printf("open error!\n");
        exit(1);
    }
    int i=0;
    while(________) // (2)
    {
        fgetc(fp);
        _________; // (3)
    }
    printf("Character: %d\n", i);
    fclose(________);// (4)
    return 0;
}

2、用键盘输入文件名,统计输出文件中每个字母、数字字符出现的次数;
[参考解答]

【项目2-用文本文件保存的学生名单】
文件score.dat中保存的是若干名学生的姓名和C语言课、高数和英语成绩。
(1)定义学生结构体,其中包含姓名、C++课、高数和英语成绩及总分数据成员。

//定义学生结构体
typedef struct 
{
    string name;
    double cpp;
    double math;
    double english;
    double total;
}Student

(2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。

int main( ){
    Student stud[200],t; //stud[200]为保存数据的对象数组
    //从文件score.dat中读入数据,保存到对象数组中

    //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中
    return 0;
}

[参考解答]

【项目3 - 处理C语言源代码的程序】
用C语言写的源程序是一种文本文件。本项目将以C语言的源程序为操作对象,完成对源程序的一系列处理,如判断是否有main函数、将某些行加上注释等。各功能可以分别编制一个程序实现(建议用这种简单的方案),也可以将其集成在一起(向着自己做出IDE努力)。
(1)读入一个C++程序,判断其中是否只有一个main()函数,输出“暂时没有发现问题”,或者“没有main()函数”,或者“不能定义多个main()函数”;
提示1:简单处理,可以只比较判断“main()”,考虑实际上的各种可能,main后面的括号中有任意多个空格及void的都应该算在内。建议按最简单的情形处理。
提示2:建议设计一个函数,将读到的代码与字符串“main()”进行比较。函数用于判断s1是否“包含”在读入的一行s2中,调用时,形参s1处的实参用”main()”即可,这样写提升了“抽象”级别,更容易实现,对应更高的代码质量。
(2)读入一个C语言程序,使程序中的所有左花括号“{”和右花括号“}”都单独占一行,新程序保存到另一个.c文件中,并在屏幕上显示处理过的程序,显示时加上行号。
(3)读入一个C语言程序,输入m、n两个数字,从第m行起的n行代码将作为注释使用(即在这些行前面加上”//”),新程序保存到另一个.c文件中,并在屏幕上显示处理过的程序,显示时加上行号。
[参考解答]

【项目4 - 间隔选职工】
(1)从键盘输入10名职工的工号、姓名和年龄,并保存到二进制文件worker.rec中
用下面的结构体表示一名职工的记录

typedef struct 
{ 
    int num;   //工号
    char name[10];   //姓名
    int age;  //年龄
} Worker;

(2)从文件中读取并显示顺序号为奇数的职工记录。(即第 1,3,5,…号职工的数据)
[参考解答]

【项目5 - 二进制文件浏览器】
(1)做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容,可以参考下图:
这里写图片描述
提示:循环中,一次读入16个字节,先用16进制形式输出,再用字符形式输出。
(2)通过为main函数加参数,在命令行方式下,输入“命令加文件名”的方式,就可以显示该文件的内容,也采用如上16进制和ASCII对照的形式。
[参考解答]

目录
相关文章
|
16天前
|
Linux C语言
C语言获取文件长度
C语言获取文件长度
|
18天前
|
存储 程序员 C语言
C语言-文件操作
C语言-文件操作
45 2
|
28天前
|
算法 C语言 C++
【C语言实战项目】三子棋游戏
【C语言实战项目】三子棋游戏
30 1
|
28天前
|
程序员 C语言
【C语言实战项目】猜数字游戏
【C语言实战项目】猜数字游戏
27 0
【C语言实战项目】猜数字游戏
|
1月前
|
安全 算法 程序员
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
34 0
|
1月前
|
C语言
C语言文件操作
C语言文件操作
17 0
C语言文件操作
|
1月前
|
C语言
C语言文件操作
C语言文件操作
|
19天前
|
存储 程序员 编译器
【C语言】深度探讨文件操作(一)
【C语言】深度探讨文件操作(一)
|
1天前
|
存储 算法 C语言
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
|
25天前
|
Linux 测试技术 C语言
【Linux】应用编程之C语言文件操作
【Linux】应用编程之C语言文件操作