例1:从键盘输入一些字符,并逐个把它们送到磁盘上去,直到用户输入一个'#'为止
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main() {
FILE* fp;
char ch, filename[20];
printf("输入文件名:");
gets_s(filename);
if ((fp = fopen(filename, "w")) == NULL) {
printf("打开错误!");
exit(0);
}
printf("输入字符串(以'#'结束):");
ch = getchar();
while(ch != '#') {
fputc(ch, fp);
ch = getchar();
}
fclose(fp);
return 0;
}
例2:将一个磁盘文件中的信息复制到另一个磁盘文件中。今要求将上例建立的a.txt文件中的内容复制到另一个磁盘文件中的b.txt中
feof()函数:检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0。一般在文件操作,中经常使用feof()判断文件是否结束。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
FILE* p, * q; // p指向读入文件,q指向输出文件
char ch, filename1[20], filename2[20];
printf("请输入读入文件的名字:");
gets_s(filename1);
if ((p = fopen(filename1, "r")) == NULL) {
printf("无法打开此文件");
exit(0);
}
printf("请输入写入文件的名字:");
gets_s(filename2);
if ((q = fopen(filename2, "w")) == NULL) {
printf("无法打开此文件");
exit(0);
}
ch = fgetc(p);
while (!feof(p)) {
fputc(ch, q);
ch = fgetc(p);
}
fclose(p);
fclose(q);
return 0;
}
例3:从键盘读入若干个字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void swap(char *p, char *q) {
char temp[100];
strcpy(temp, p);
strcpy(p, q);
strcpy(q, temp);
}
int main() {
FILE* fp;
char a[100], b[100], c[100], filename[20];
int i, j;
gets_s(a);
gets_s(b);
gets_s(c);
// 假设字符串从小到大排序
if (strcmp(a, b) > 0) swap(a, b);
if (strcmp(a, c) > 0) swap(a, c);
if (strcmp(b, c) > 0) swap(b, c);
printf("请输入文件名:");
gets_s(filename);
if ((fp = fopen(filename, "w")) == NULL) {
printf("无法打开文件!");
}
fputs(a, fp);
fputc('\n', fp); // 向文件输入换行符
fputs(b, fp);
fputc('\n', fp);
fputs(c, fp);
fclose(fp);
return 0;
}
例4:从键盘输入5个学生的有关数据,然后把它们转存到磁盘文件上去
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#define N 5
//从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去
struct student {
int num;
char name[10];
int age;
char addr[20];
};
int main() {
FILE* fp;
int i;
char filename[20];
struct student stu[N];
printf("请输入文件名:");
gets_s(filename);
if ((fp = fopen(filename, "wb")) == NULL) {
printf("无法打开文件!");
exit(0);
}
for (i = 0; i < N; i++) {
printf("请输入第%d位学生的信息:", i + 1);
scanf("%d%s%d%s", &stu[i].num, &stu[i].name, &stu[i].age, &stu[i].addr);
if ((fwrite(&stu[i], sizeof(struct student), 1, fp)) != 1) {
printf("文件未被写入!");
}
}
fclose(fp);
return 0;
}
标签:fp,文件,include,filename,---,ch,printf,习题,第五版
From: https://blog.csdn.net/m0_60875396/article/details/136778158