设为首页 加入收藏

TOP

C语言新建文件读出文件内容(一)
2014-07-19 22:52:48 来源: 作者: 【 】 浏览:278
Tags:语言 新建 文件 读出 内容

    一、读写一个字符函数--函数fgetc()和fputc()
    调用形式分别为: ch=fgetc(fp); fputc(ch,fp); fgetc()函数将fp指向的文件的一个字符读到内存,赋给字符变量ch.如果遇文件结束符时,函数返回值为1.
    例:从键盘输入一些字符逐个送入磁盘,直到#为止。再将此盘文件读入内存,逐个显示在光屏。
    # include <stdio.h>
    int main( )
    {
    FILE *fp;
    char ch,filename ;
    scanf("%s",filename); /*读入磁盘文件名*/
    if((fp=fopen(filename,"w"))==NULL) /*建立新文件 */
    {
    printf("cannot open file\n"); /*建立新文件出错误信息*/
    exit(1); /*终止调用过程、关闭所有文件*/
    }
    ch=getchar( ); /*从键盘读入一个字符*/
    while(ch!='#') /*读到#时停止输入*/
    {
    fputc(ch,fp); /*将ch内字符写入fp指向的文件*/
    ch=getchar( );
    }
    fclose(fp); /*关闭fp所指向的文件*/
    if((fp=fopen(filename,"r"))==NULL) /*将filename 以'r'方式打开*/
    {
    printf("cannot open file\n");
    exit (1);
    }
    ch=fgetc(fp); /*从fp指向的文件读一个字符给ch变量 */
    while(ch!=EOF) /*读到文件结束符EOF时结束 */
    {
    putchar(ch);
    ch=fgetc(fp);
    }
    fclose(fp); /*关闭文件*/
    return 0;
    }
    二、读写数据块函数--fread( )和fwrite( )函数
    调用方式分别为:
    (1) 、fread(buffer,size,count,fp); 该函数将fp指向的文件的数据以数据块的形式读入内存buffer
    (2)、write(buffer,size,count,fp);该函数将内存buffer的内容以数据块的形式写入fp指向的文件。
    其中:buffer:是一个指针。对于fread来说 它是读入数据的有效地址。对 fwrite来说,是要写盘的数据地址(起始地址)。 size:要读写的字节数。count:要进行读写多少个size字节的 数据项。 fp:文件型指针 如果fread或fwrite调用成功,则函数返回值为count的值。 若文件以二进制形式打开,用fread和fwrite函数就可以读写任何类型的信息。如: fread(f,4,2,fp); f为实型数组名,4表示个实型变量占4个字节,2表示读入2次,fp向的文件数据。
    例:从键盘输入4个学生的有关数据,然后把它们转存到磁盘文件上去。
    #include<stdio.h>
    #define SIZE 4
    struct student_type
    {
    char name ;
    int num;
    int age;
    char addr[15];
    }stud[SIZE];
    void save();/*保存输入数据到文件的函数声明*/
    void output();/*输入文件内容的函数声明*/
    /*在主函数main( )中的终端读入4个学生的数据,然后调用save( )函数。*/
    int main()
    {
    int i;
    for(i=0;i<SIZE;i++)
    scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age, stud[i].addr);
    save();
    printf("**********************************\n");
    printf("这是刚才写到文件里的内容\n");
    output();
    return 0;
    }
    /*save( )函数,将数据送到"stu_list"磁盘文件中去。*/
    void save()
    {
    FILE *fp;
    int i;
    if((fp=fopen("stu_list","wb"))==NULL)
    {
    printf("cannot open file\n");
    return;
    }
    /*函数sizeof 计算一个结构体student_type的变量长度29(10+2+2+15)字节*/
    for(i=0;i<SIZE;i++)
    if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
    printf("file write error\n");
    }
    void output()
    {
    int i;
    FILE *fp;
    fp=fopen("stu_list","rb");
    for(i=0;i<SIZE;i++)
    {
    fread(&stud[i],sizeof(struct student_type),1,fp);
    printf("%-10s%4d%4d %-15s\n",stud[i].name, stud[i].num,stud[i].age,stud[i].addr);
    }
    }

   

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇AVL树C语言完整实现 下一篇数据格式 int与char的存储方..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)
·每日一道面试题-多线 (2025-12-26 06:20:17)
·java项目中哪些地方 (2025-12-26 06:20:14)