20251期《C语言程序设计B》专项训练05-文件02-程序P796.C

19 阅读1分钟

题干

编写一程序P796.C实现以下功能
在磁盘上新建一个文件Test.txt,将从键盘读入的多个字符存储到该文件中,要求如下:
(1)若输入的字符中有小写字母,则应先将其转换为大写后再存入。
(2)输入!表示输入结束且!不存入文件中。
(3)当文件创建失败或向文件写入字符时出错,应显示指定的出错信息并终止程序的执行。
(4)程序的返回值(即由main函数return的值和程序使用exit终止运行时返回的值,也称退出代码)规定为:
①运行正常返回0 ②文件创建失败返回1 ③向文件写入字符时出错返回2
编程可用素材:printf("\nCreate file error!\n")、printf("Input chars: ")、printf("\nWriting file error!\n")。
程序的运行效果应类似地如图1所示,文件Test.txt的内容应类似地如图2所示。图1中的“Input chars: ”后面的内容系从键盘输入。

程序

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

int main(void)
{
	FILE *fp;
	char ch;
	
	// 打开文件,用于写,没有则创建文件
	fp = fopen("Test.txt", "w");
	if (NULL == fp)
	{
		printf("\nCreate file error!\n");
		exit(1);
	}
	
	printf("Input chars: ");
	
	// 写文件数据
	while (1)
	{
		ch = getchar();
		// 输入!结束输入
		if ('!' == ch)
		{
			break;
		}
		
		// 小写转为大写
		if (ch >= 'a' && ch <= 'z')
		{
			ch -= 'a' - 'A'; // ch = ch - 32;
		}
		
		// 判断写文件状态
		if ((fputc(ch, fp)) == EOF) // 注意,写入出错,才退出
		{
			printf("\nWriting file error!\n");
			fclose(fp);
			exit(2);
		}
	}
	
	// 关文件
	fclose(fp);
	fp = NULL;
	
	return 0;
}


知识点

  • 写文件,创建文件
  • 从键盘读入,写入到文件中,使用fputc一个字符一个字符写入
  • 程序出错后的退出状态码:使用exit()库函数返回给操作系统,定义不同的出错码返回