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;
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘华世(Moments)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值