0
点赞
收藏
分享

微信扫一扫

英文字符大小写(文件)

田妞的读书笔记 2022-04-29 阅读 68
c语言

题目描述

文本文件 score.dic 中存储了 n 名学生的信息(班级编号,姓名,成绩),每个学生信息占一行,每行的数据之间使用制表符分割,如下所示:

145811	fuxin		100 
145811	chengxian	90  
145812	zhangxue	92 
145812	lijun		88
...

将文本文件 score.dic 中所有英文字母改成大写,其它字符保持不变,将结果输出。

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

int main()
{
    char curch, lastch;  /* 当前读入字符,上一次读入字符*/
    FILE *fin;           /* 输入文件 */
    fin= fopen("score.dic", "r");     /* 打开输入文件读 */
    if (!fin)     /* 文件打开失败 */
    {
        fprintf(stderr, "error open file!\n");       /* 输出错误信息到标准错误设备 */
        exit(-1);       /* 强制退出,并返回错误码 */
    }
    /**************************/
    /* 遍历输入文件的每一个字符 */
    /*     当前字符是字母      */
    /*    转换为大写,并输出   */
    /*     其它字符保持不变    */
    /*      关闭输入文件      */
    /*************************/
    return 0;
}

主程序已给出,请根据提示完成缺失部分并提交该部分。 
 

输入

n名学生的信息。(班级编号,姓名,成绩)(文件读入)

输出

经过变换后的学生信息。

样例输出

145811	FUXIN		100  
145811	CHENGXIAN	90   
145812	ZHANGQUE	92  
145812	LIJUN		88

参考解答: 

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

int main()
{
    char curch, lastch;  /* 当前读入字符,上一次读入字符*/
    FILE* fin;           /* 输入文件 */
    fin = fopen("score.dic", "r");     /* 打开输入文件读 */
    if (!fin)     /* 文件打开失败 */
    {
        fprintf(stderr, "error open file!\n");       /* 输出错误信息到标准错误设备 */
        exit(-1);       /* 强制退出,并返回错误码 */
    }
    while ((curch = fgetc(fin)) != EOF)   /* 遍历输入文件的每一个字符 */
    {
        if (((lastch < 'a' || lastch>'z') && (lastch < 'A' || lastch>'Z')) && (curch >= 'a' && curch <= 'z'))/* 当前字符是字母,上一次不是字母*/
        {    /* 转换为大写,写入文件*/
            curch = curch - 32;
            printf("%c", curch);
        }
        else   /* 其它字符保持不变,写入文件*/
            printf("%c", curch);
        lastch = curch;    /* 记录上一次读入的字母*/
    }
    fclose(fin);   /* 关闭输入文件*/
    return 0;
}
举报

相关推荐

0 条评论