C //例10.5 有一个磁盘文件,内有一些信息。要求第1次将它的内容显示在屏幕上,第2次把它复制到另一文件上。
2023-12-13 19:38:16
C程序设计 (第四版) 谭浩强 例10.5
例10.5 有一个磁盘文件,内有一些信息。要求第1次将它的内容显示在屏幕上,第2次把它复制到另一文件上。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
?
代码块
方法:使用指针,函数的模块化设计,动态分配内存
说明:这里准备先写入的文件名称为Test.txt,准备复制到Test1.txt文件中,文件都已经存在于该项目目录下。
#include <stdio.h>
#include <stdlib.h>
void initialVar(char **name1, char **name2){
*name1 = (char*)malloc(80 * sizeof(char));
*name2 = (char*)malloc(80 * sizeof(char));
}
void inputFileName(FILE **file, char *name, int num){
printf("Enter File%d Name: ", num);
scanf("%s", name);
char *sign = '\0';
if(num == 1){
sign = "r";
}
if(num == 2){
sign = "w";
}
*file = fopen(name, sign);
if(*file == NULL){
perror("Cannot open this file");
system("pause");
exit(0);
}
}
void inputFile(FILE **file, char *name){
*file = fopen(name, "w+");
char ch = getchar();
printf("Enter String (End with EOF): ");
while((ch = getchar()) != EOF){
fputc(ch, *file);
}
printf("\n");
fclose(*file);
}
void outputFile(FILE **file, char *name){
*file = fopen(name, "r");
if(*file == NULL){
perror("Cannot open this file");
system("pause");
exit(0);
}
while(!feof(*file)){
putchar(fgetc(*file));
}
putchar(10);
}
void fileCopy(FILE **file1, FILE **file2, char *name1, char *name2){
rewind(*file1);
char ch = getchar();
while(!feof(*file1)){
ch = fgetc(*file1);
fputc(ch, *file2);
putchar(ch);
}
fclose(*file1);
fclose(*file2);
putchar(10);
}
void freeVar(char **name1, char **name2){
free(*name1);
free(*name2);
}
int main(){
FILE *file1 = NULL;
FILE *file2 = NULL;
char *name1 = NULL;
char *name2 = NULL;
initialVar(&name1, &name2);
inputFileName(&file1, name1, 1);
inputFile(&file1, name1);
outputFile(&file1, name1);
inputFileName(&file2, name2, 2);
fileCopy(&file1, &file2, name1, name2);
freeVar(&name1, &name2);
system("pause");
return 0;
}
运行结果如下:
文章来源:https://blog.csdn.net/navicheung/article/details/134869557
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!