开发者社区> 贺利坚> 正文

《C语言及程序设计》实践参考——由键盘到文件

简介: 返回:贺老师课程教学链接  项目要求 【项目1-由键盘到文件】(1)从键盘输入一个文件名,以及一个以#结束的字符序列,将输入的字符保存到文件中去。 #include "stdio.h" #include "stdlib.h" int main() { FILE *fp ; char ch,fname[10]; printf("文件名:"); gets(fna
+关注继续查看

返回:贺老师课程教学链接  项目要求


【项目1-由键盘到文件】
(1)从键盘输入一个文件名,以及一个以#结束的字符序列,将输入的字符保存到文件中去。

#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE *fp ;
    char ch,fname[10];
    printf("文件名:");
    gets(fname);
    if ((fp=____(1)____)==NULL)
    {
        printf("connot open\n");
        exit(0);
    }
    while ((ch=getchar())!='#')
        fputc(____(2)____);
    ____(3)____;
    return 0;
}
[参考解答]

#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE *fp ;
    char ch,fname[10];
    printf("文件名:");
    gets(fname);
    if ((fp=fopen(fname, "w"))==NULL)  //(1)
    {
        printf("connot open\n");
        exit(0);
    }
    while ((ch=getchar())!='#')
        fputc(ch,fp);   //(2)
    fclose(fp);   //(3)
    return 0;
}


(2)设上题建立了名为f1.dat的文件,请将这个文件拷贝到一个名为f2.dat的文件中。
#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE *fp1,*fp2 ;
    char c;
    if ((fp1=fopen("f1.dat", ___(1)___))==NULL)
    {
        printf("connot open\n");
        exit(0);
    }
    if ((fp2=fopen("f2.dat", ___(2)___))==NULL)
    {
        printf("connot open\n");
        exit(0);
    }
    c=fgetc(fp1);
    while (___(3)___)
    {
        fputc(c,fp2);
        c=fgetc(fp1);
    }
    ___(4)___      
    return 0;
}
[参考解答]

#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE *fp1,*fp2 ;
    char c;
    if ((fp1=fopen("f1.dat", "r"))==NULL)  //(1)
    {
        printf("connot open\n");
        exit(0);
    }
    if ((fp2=fopen("f3.dat", "w"))==NULL)  //(2)
    {
        printf("connot open\n");
        exit(0);
    }
    c=fgetc(fp1);
    while (c!=EOF)  //(3):或者!feof(fp1),feof函数用于检查是否到达文件尾
    {
        fputc(c,fp2);
        c=fgetc(fp1);
    }
    fclose(fp2); fclose(fp1); //(4)
    return 0;
}


(3)以下程序的功能是将文件file1.dat的内容输出到屏幕上并复制到文件file2.dat中,请补充完整。
#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE ___(1)___;
    char ch;
    fp1=fopen("file1.dat","r");
    fp2=fopen("file2.dat","w");
    while (!feof(fp1))
    {
        ch=___(2)___;
        putchar(ch);
        fputc(___(3)___);
    }
    fclose(fp1);
    fclose(fp2) ;
    return 0;
}
[参考解答]

#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE *fp1, *fp2;  //(1)
    char ch;
    fp1=fopen("file1.dat","r");
    fp2=fopen("file2.dat","w");
    while (!feof(fp1))
    {
        ch=fgetc(fp1);  //(2)
        putchar(ch);
        fputc(ch, fp2);  //(3)
    }
    fclose(fp1);
    fclose(fp2) ;
    return 0;
}




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何使用 “C语言” 对文件进行操作?
前言 文件操作 在运行程序的时候,此时数据是存放在内存中,当程序退出的时候,程序中的数据自然就不存在了,等下次运行程序的时候,数据又得重新录入,我们可以用文件的办法,把程序中的数据保存下来,只有我们自己选择删除数据的时候,数据才不复存在。 这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。 文件指针: 向文件里输出或读取数据需要使用文件指针的形式,每个文件指针可以用来打开一个文件,这个文件指针指向文件的文件信息区。 FILE * 变量名 🌞
7 0
用c语言将文件中十六进制数据与二进制数据相互转换
用c语言将文件中十六进制数据与二进制数据相互转换
11 0
c语言复习之文件(十三)
c语言复习之文件(十三)
17 0
C语言总结(第10章对文件的输入输出)
有时,需要程序从文件中读取信息或把信息写入文件。这种程序与文件交互的形式就是文件重定向。这种方法很简单,但是有一定限制。
22 0
C语言课设——通讯录(静态、动态、文件三版合一)(下)
下面是不同版本的源码,文件版为重新编写的版本,在部分变量和函数命名上可能与前两个版本有差异,但底层逻辑是一致的。
39 0
C语言课设——通讯录(静态、动态、文件三版合一)(上)
相信每个科班的同学都有过C语言课设的经历,比如教职工工资管理系统、图书信息管理系统、学生信息管理系统、通讯录系统等,其实这些课设任务的底层逻辑都是一致的,无非就是对结构体变量进行增删查改操作,同时配合文件操作将数据保存在文件夹中,本文将以通讯录举例,从静态版到文件版,让大家明白通讯录系统是如何逐步完善的。
28 0
C生万物 | C语言文件操作指南汇总【内附文件外排序源码】
从0到1教你学会C语言文件操作。附有文件外排序实战训练加成,对文件操作更上一层楼
31 0
用C语言读取大文件的问题 内存映射
在处理一般的文件(文本/非文本),这些足够了。然而在处理比较大的文件如几十M, 几百M, 甚至上G的文件, 这时再用一般手段处理,系统就显的力不从心了要把文件读出,再写进,耗费的是CPU利用率与内存以及IO的频繁操作。这显然是令用户难以忍受的为了解决这个吃内存,占CPU,以及IO瓶颈,windows核心编程提供了内存映射文件技术(Maping File)
65 0
+关注
贺利坚
烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载