C Primer Plus 第6版 编程练习 chapter 13

1. 第1题

1.1 题目描述

修改程序清单中13.1中的程序,要求提示用户输入文件名,并读取用户输入的信息,不使用命令行参数。

1.2 编程源码

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char* argv[]){
   
	int ch;
	char name[40];
	FILE *fp;
	unsigned long count = 0;
	
	printf("请输入文件名:");
	scanf("%s", name);
	
	if((fp=fopen(name,"r"))==NULL){
   
		printf("Can`t open %s \n", argv[1]);
		exit(EXIT_FAILURE);
	}
	
	while((ch=getc(fp))!=EOF){
   
		putc(ch, stdout);
		++count;
	}
	
	fclose(fp);
	printf("File %s has %lu characters\n", name, count);
	
	return 0;
}

1.3 结果显示

文档内容:

abc 123 ref 345
dog is running 
cat is running 

结果显示


2. 第2题

2.1 题目描述

编写一个文件拷贝程序,该程序通过命令行获取原始文件名和拷贝文件名。尽量使用标准I/O和二进制模式。

2.2 编程源码

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char* argv[]){
   
	if(argc<3){
   
		printf("请按照程序 输入文件名 输出文件名 格式进行输入\n");
		exit(EXIT_FAILURE);
	}
	
	FILE *in,*out;
	
	if((in=fopen(argv[1],"r")) == NULL){
   
		printf("%s 打开失败!\n", argv[1]);
		exit(EXIT_FAILURE);
	}
	
	if((out=fopen(argv[2],"w"))==NULL){
   
		printf("%s 打开失败!\n", argv[2]);
		exit(EXIT_FAILURE);
	}
	
	char ch;
	
	while((ch = getc(in)) && ch != EOF)
		putc(ch,out);
	
	fclose(in);
	fclose(out);
	
	return 0;
}

2.3 结果显示

原始文档:

#include<iostream>

int main(void){
	const int i;
	
	return 0;
}

结果显示
拷贝后文档:

#include<iostream>

int main(void){
	const int i;
	
	return 0;
}

3. 第3题

3.1 题目描述

编写一个文件拷贝程序,提示用户输入文本文件名,并以该文件名作为原始文件名和输出文件名。该程序要使用ctype.h中的toupper函数,在写入到输出文件时把所有文本转换成大写。使用标准I/O和文本模式

3.2 编程源码

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char* argv[]){
   
	char name[40];
	char name2[40];
	printf("请输入文件名:");
	scanf("%s", name);
	printf("请输出文件名:");
	scanf("%s", name2);		
	
	FILE *in,*out;	
	if((in=fopen(name,"r")) == NULL){
   
		printf("%s 打开失败!\n", name);
		exit(EXIT_FAILURE);
	}	
	
	if((out=fopen(name2,"w"))==NULL){
   
		printf("%s 打开失败!\n", name2);
		exit(EXIT_FAILURE);
	}
	
	char ch;
	
	while((ch = getc(in)) && ch != EOF)
		putc(ch,out);
	
	fclose(in);
	fclose(out);
	
	return 0;
}

3.3 结果显示

test.c

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char* argv[]){
	char name[40];
	char name2[40];
	printf("请输入文件名:");
	scanf("%s", name);
	printf("请输出文件名:");
	scanf("%s", name2);		
	
	FILE *in,*out;	
	if((in=fopen(name,"r")) == NULL){
		printf("%s 打开失败!\n", name);
		exit(EXIT_FAILURE);
	}	
	
	if((out=fopen(name2,"w"))==NULL){
		printf("%s 打开失败!\n", name2);
		exit(EXIT_FAILURE);
	}
	
	char ch;
	
	while((ch = getc(in)) && ch != EOF)
		putc(ch,out);
	
	fclose(in);
	fclose(out);
	
	return 0;
}

结果显示

a.txt

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char* argv[]){
	char name[40];
	char name2[40];
	printf("请输入文件名:");
	scanf("%s", name);
	printf("请输出文件名:");
	scanf("%s", name2);		
	
	FILE *in,*out;	
	if((in=fopen(name,"r")) == NULL){
		printf("%s 打开失败!\n", name);
		exit(EXIT_FAILURE);
	}	
	
	if((out=fopen(name2,"w"))==NULL){
		printf("%s 打开失败!\n", name2);
		exit(EXIT_FAILURE);
	}
	
	char ch;
	
	while((ch = getc(in)) && ch != EOF)
		putc(ch,out);
	
	fclose(in);
	fclose(out);
	
	return 0;
}

4. 第4题

4.1 题目描述

编写一个程序,按顺序在屏幕上显示命令行中列出的所有文件。使用argc控制循环。

4.2 编程源码

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char* argv[]){
   
	for(int i=1;i<argc;++i){
   
		puts(argv[i]);
	}
	
	return 0;
}

4.3 结果显示

结果显示


5. 第5题

5.1 题目描述

修改程序清单13.5中的程序,用命令行界面代替交互式界面。

5.2 编程源码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define BUFSIZE 4096
#define SLEN 81
void append(FILE *source, FILE *dest){
   
	size_t bytes;
	static char temp[BUFSIZE];
	
	while((bytes = fread(temp, sizeof(char), BUFSIZE, source))>0)
		fwrite(temp, sizeof(char),bytes, dest);
}
char* s_gets(char *st, int n){
   
	char *ret_val;
	char *find;
	
	ret_val = fgets(st, n, stdin);
	if(ret_val){
   
		find = strchr(st, '\n');
		if(find) *find = '\0';
		else{
   
			while(getchar()!='\n')continue;
		}
	}
	return ret_val;
}

int main(int argc, char* argv[]){
   
	if(argc<3){
   
		printf("缺少文件,请按照格式输入\n");
		exit(EXIT_FAILURE);
	}	
	
	FILE *fa, *fs;
	int files = 0;
	char file_app[SLEN];
	char file_src[SLEN];
	int ch;
	
	if((fa=fopen(argv[1], "a+"))==NULL){
   
		fprintf(stderr, "Can`t open %s \n", file_app);
		exit(EXIT_FAILURE);
	}
	
	if(setvbuf(fa, NULL, _IOFBF, BUFSIZE) != 0){
   
		fputs("Can`t create output buffer\n", stderr);
		exit(EXIT_FAILURE);
	}
	
	for(int i=2;i<argc;++i){
   
		if(strcmp(argv[i], file_app) == 0){
   
			fputs("Can`t append file to itself\n", stderr
weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值