c语言文件和结构体,C语言 文件操作 结构体与文件 fgetc fputc fread fwrite

#include

#include

/*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

#include

/*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

#include

/*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

#include

/*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

#include

#include

/*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

//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

#include

/*将文件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

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

fputc(str[i], fp); //逐个写入文件

fclose(fp); //关闭文件

printf("文件中的小写字母已经转成了大写字母!");

return 0;

}

#include

#include

/*将两个文件合并成一个文件*/

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

#include

#include

/*结构体文件操作 将结构体其中一成员加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

c[i].age++; //将结构体一成员加1

fp = fopen("f1806.db", "wb"); //以写方式打开文件

if(fp==NULL){printf("文件写打开失败");exit(1);}

for( i=0; i

fwrite(&c[i], sizeof(c[i]),1,fp);

fclose(fp);

for( i=0; i

printf("%s %d\n", c[i].name, c[i].age);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值