问题 A: 实验12_1_初识ASCII码文件
已知一个ASCII码文件,文件名为dict.dic,该文件中只包含ASCII码中的字符,即可对应整数0—127。我们将ASCII码中的字符分为4类,第一类为大写字母“A—Z”、第二类为小写字母“a—z”、第三类为数字字符“0—9”、第四类为其他字符“!@#$%^&*” 等等(不属于前三类的字符即为第四类)。
要求:
1.统计出这四类字符在该文件中的数量。
2.统计出该文件的行数、行最大长度、行最小长度。这里要注意,虽然文件的换行符确实为一个字符,ASCII码为10,但在统计行长度时,文件中的换行符并不统计在内。
3.输出具体的大小写字母的统计信息,每行一个字母。
4.处理完成后,关闭文件。
内容提示:在本题对文件的操作内容中,会用到三个新的C语言文件操作函数,一种新的打开文件的方式,如下:
1.FILE *fp=fopen(“file.txt”,“r”);//fp即为文件指针,"file.txt"为待打开的文件名,此时应与该程序在一个目录下,"r"为以只读方式打开ASCII码文件。
2.int ch=fgetc(fp);//从fp指向的文件中读取一个字节(字符),存入变量ch内。
3.fclose(fp);//关闭fp指向的文件。
(debug忙半天,最后发现是没加冒号,大家一定要注意细节啊。。。)
代码如下:
虽然但是,oj是有查重的,希望不要只当搬运工
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void task1(FILE *fptr);
void task2(FILE *fptr);
void task3(FILE *fptr);
int main()
{
int state;
scanf("%d", &state);
FILE *fptr;
fptr=fopen("dict.dic","r");
if(fptr==NULL)
{
printf("文件打开失败");
} else
{
switch(state)
{
case 1:
task1(fptr);
break;