C Primer Plus 第十三章 编程练习3

作者在 2013-05-12 11:43:36 发布以下内容
/*
编写一个文件复制程序.
提示用户输入源文件名和输出文件名
在向输出文件写入时,程序应当使用 ctype.h 中定义的 toupper()函数将所有的文本转换成大写
使用标准I/O和文本模式 
*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#define SIZE 40

void copy(char *, char *);

int main(int argc, char **argv)
{
	char source[SIZE];	//源文件名 
	char target[SIZE];	//目的文件名

	printf("Enter source file name: ");
	scanf("%s", source);
	printf("Enter target file name: ");
	scanf("%s", target);
	
	if(!(strcmp(source, target)))			/*文件同名判断*/
	{
		fprintf(stderr, "Cannot copy to itself!\n");
		exit(2);
	}
	
	copy(source, target);	/*调用函数复制文件*/
	
	puts("Done.");
	return 0;
}

void copy(char * source, char * target)
{
	FILE * fps, * fpt;
	char ch;
	
	if((fps = fopen(source, "r")) == NULL)
	{
		fprintf(stderr, "Can't open file %s.\n", source);
		exit(3);
	}
	
	if((fpt = fopen(target, "w")) == NULL)
	{
		fprintf(stderr, "Can't create file %s.\n", target);
		exit(3);
	}
	
	while((ch = getc(fps)) != EOF)
		putc(toupper(ch), fpt);		/*将小写转换为大写写入目标文件*/
	
	fclose(fps);			/*关闭文件*/
	fclose(fpt);
}

文章评论,共0条
游客请输入验证码
浏览39533次