• C语言 文件操作 结构体与文件 fgetc fputc fread fwrite


    #include <stdio.h>
    #include <stdlib.h>
    /*C语言 将键盘输入的字符写入文件*/
    int main(int argc, char* argv[])
    {
        FILE *fp; //文件指针
        char str1[50],str2[50]; //定义两个字符串变量
        int i; //定义一个整形变量
        
        gets(str1); //获取从键盘输入的字符,保存到 str1
        gets(str2); //获取从键盘输入的字符,保存到 str2
        
        fp = fopen("f1801.txt", "w"); //以写入的方式打开文件
        if(fp==NULL){printf("文件打开失败!";exit(1);} //如果打开失败就退出返回1
        
        for( i=0; str1[i]!='\0'; i++ ) //一个一个写进文件
            fputc(str1[i],fp);
        for( i=0; str2[i]!='\0'; i++ )
            fputc(str2[i], fp);
            
        fclose(fp); //关闭文件
        printf("输入的内容已经写入文件!");
        
        return 0;
    }
    
    
    #include <stdio.h>
    #include <stdlib.h>
    /*C语言 统计文件中大小写字母个数*/
    int main(int argc, char* argv[])
    {
        FILE *fp; //文件指针
        char c;
        int num_big = 0, num_small = 0, num_char = 0;
        
        fp = fopen("f1802.txt", "r"); // 以只读的方式打开文件
        if(fp==NULL){printf("文件打开失败!");exit(1);} //如果打开失败就退出返回1
        
        while(1) //循环计数
        {
            c = fgetc(fp); //一次读取一个字符
            if(c==EOF)break; //到文件尾则退出循环
            if(c>='A' && c <='Z') num_big++; //对大写字母计数
            if(c>='a' && c <='z') num_small++; //对小写字母计数
            num_char++; //总数
        }
        
        fclose(fp); //关闭文件
        printf("大写字母有%d个\n小写字每有%d个\n总共有%d个字符\n", num_big, num_small, num_char);
        return 0;
    }
    
    #include <stdio.h>
    #include <stdlib.h>
    /*C语言 两个文件之间的复制 复制文件*/
    int main(int argc, char* argv[])
    {
        FILE *fp1, *fp2; //两个文件指针
        char c;
        
        fp1 = fopen("f1802.txt", "r"); //以只读的方式打开文件
        if(fp1==NULL){printf("文件1打开失败!");exit(1);} //打开文件失败退出返回1
        fp2 = fopen("f1805.txt", "w");
        if(fp2==NULL){printf("文件2打开失败!");exit(1);}
        
        while(1) //循环计数
        {
            c = fgetc(fp1); //一次读取一个字符
            if(c==EOF) break; //到文件尾则退出循环
            if(c>='A' && c<='Z') fputc(c, fp2); //将大写字母写入到文件2
        }
        
        fclose(fp1); //关闭文件
        fclose(fp2); //关闭文件
        
        printf("已完成操作!");
        return 0;
    }
    
    #include <stdio.h>
    #include <stdlib.h>
    /*C语言 结构体和文件操作写入文件*/
    typedef struct //学生结构体
    {
        char name[10];
        char sex[5];
        int age;
    }STUDENT;
    
    int main(int argc, char* argv[])
    {
        STDENT b[5]; //结构体数组
        int num, i;
        FILE *fp;
        for( i = 0; i < 5; i++ ) //输入五个学生结构体变量内容
            scanf("%s %s %d", b[i].name, b[i].sex, &b[i].age);
            
        fp = fopen("f1806.db", "wb"); //以二进制写入方式打开文件
        if(fp==NULL){printf("文件写打开失败");exit(1);} //打开文件失败退出返回1
        
        for( i=0; i<5; i++ )
            fwrite(&b[i], sizeof(b[i]),1, fp); //以1个sizeof(b[i])块写入到fp中
        fclose(fp); //关闭文件
        
        printf("已经写入完成\n");
        return 0;
    }
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    /*C语言 结构体和文件操作读取文件*/
    typedef struct
    {
        char name[10];
        char sex[5];
        int age;
    }STUDENT;
    
    int main(int argc, char* argv[])
    {
        STUDENT c[10]; //结构体数组
        int num, i;
        FILE *fp;
        
        fp = fopen("f1806.db", "rb"); //以二进制读取方式打开文件
        if(fp==NULL){printf("文件读打开失败");exit(1);} //打开文件失败退出返回1
        
        num = 0;
        while(fread(&c[num], sizeof(c[num]),1,fp)==1)num++; //从文件fp中一次读取1个sizeof(c[num])块的大小到c[num]中
        fclose(fp);
        
        for( i=0; i<num; i++ )
            //if(strcmp(c[i].sex, "男")==0) printf("%s %d\n", c[i].name, c[i].age); //输出男人的年龄
            printf("%s %d\n", c[i].name, c[i].age);
    }
    
    #include <stdio.h>
    #include <stdlib.h>
    /*将文件1中的小写字母转成大写字母写入到文件2中*/
    int main(int argc, char* argv[])
    {
        FILE *fp; //文件指外
        int num=0, i;
        char c, str[200];
        
        fp = fopen("f1808.txt", "r"); //以读方式找开文件
        if(fp==NULL){printf("文件打开失败1");exit(1);}
        
        while(1)
        {
            c = fgetc(fp); //一次读取一个字符
            if(c==EOF) break; //到文件尾则跳出
            str[num] = c;
            num++;
        }
        fclose(fp); //关闭文件
        
        for( i=0; i<num; i++)
            if(str[i]>='a' && str[i]<='z') str[i] = str[i]-32; //小写转成大写
        
        fp = fopen("f1808.txt", "w"); //以写方式打开文件
        if(fp==NULL){printf("文件打开失败2");exit(1);}
    
        for( i=0; i<num; i++ )
            fputc(str[i], fp); //逐个写入文件
        fclose(fp); //关闭文件
        
        printf("文件中的小写字母已经转成了大写字母!");
        return 0;
    }
    
    
    #include <stdio.h>
    #include <stdlib.h>
    /*将两个文件合并成一个文件*/
    FILE* openfile(FILE *fp, char* name, char* mode)
    {
        fp = fopen(name, mode);
        if(fp==NULL){printf("文件打开失败");exit(1);}
        return fp;
    }
    int main(int argc, char* argv[])
    {
        FILE *fp1, *fp2, *fp3; //文件指针
        char c;
        
        fp1 = openfile(fp1, "f18091.txt", "r"); //以只读的方式打开文件
        fp2 = openfile(fp2, "f18092.txt", "r");
        fp3 = openfile(fp3, "f18093.txt", "w");
        
        while(1)
        {
            c = fgetc(fp1);//一次读取一个字符
            if(c==EOF) break;//到文件尾则跳出
            fputc(c, fp3); //写入文件
        }
        while(1)
        {
            c = fgetc(fp2);//一次读取一个字符
            if(c==EOF) break;//到文件尾则跳出
            fputc(c, fp3);//写入文件
        }
        fclose(fp1); //关闭文件
        fclose(fp2);
        fclose(fp3);
        
        printf("操作完成\n");
        return 0;
    }
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    /*结构体文件操作 将结构体其中一成员加1(C语言结构体读取和写入操作)*/
    typedef struct //定义STUDENT结构体
    {
        char name[10];
        char sex[5];
        int age;
    }STUDENT;
    
    int main(int argc, char* argv[])
    {
        STUDENT c[10]; //定义结构体变量
        int num, i;
        FILE *fp; //文件指针
        
        fp = fopen("f1806.db", "rb"); //以读方式打开文件
        if(fp==NULL){printf("文件读打开失败");exit(1);}
        
        num = 0;
        while(fread(&c[num],sizeof(c[num]), 1, fp)==1) num++; //读取文件内容到结构体变量
        fclose(fp); //关闭文件
        
        for( i=0; i<num; i++ )
            c[i].age++; //将结构体一成员加1
        
        fp = fopen("f1806.db", "wb"); //以写方式打开文件
        if(fp==NULL){printf("文件写打开失败");exit(1);}
        for( i=0; i<num; i++ ) //将内容写回到文件
            fwrite(&c[i], sizeof(c[i]),1,fp);
        fclose(fp);
        
        for( i=0; i<num; i++ ) //输出修改后的数据内容
            printf("%s %d\n", c[i].name, c[i].age);
        
        return 0;
    }
  • 相关阅读:
    获取本地计算机的主机信息
    用函数SendARP()获取局域网计算机的MAC地址
    获取本地计算机的操作系统
    获取本地计算机名和IP地址
    基于TCP(面向连接)的Socket编程
    SMTP协议
    使用截获消息响应截断某些消息
    《Windows核心编程》读书笔记 上
    vc++高级班之多线程篇[7]---线程间的同步机制②
    vc++高级班之多线程篇[6]---线程间的同步机制①
  • 原文地址:https://www.cnblogs.com/pythonschool/p/2843156.html
Copyright © 2020-2023  润新知