C语言中对文件的中文内容进行读出

本文介绍了一种从文本文件中读取并提取汉字编码的方法。通过逐字符读取文件内容,并判断每个字符是否为汉字编码(小于0),将汉字编码保存到字符数组中,最终输出提取到的所有汉字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


//对文件的中文内容进行读出      按字符方式读取文件,每读一个字符判断一下是否为汉字编码(<0),若是则存入字符数组,不是则跳过读取下一个字符,直到文件结束。 

#include "stdio.h"
#include "stdlib.h"
int main(void){
    char s[1000],ch;
    FILE *fp;
    int i=0;
    if((fp=fopen("awe.txt","r"))==NULL){
        printf("Open the file failure...\n");
        exit(0);
    }
    while((ch=fgetc(fp))!=EOF)
        if(ch<0)                        //按字符方式读取文件,每读一个字符判断一下是否为汉字编码(<0),若是则存入字符数组,不是则跳过读取下一个字符,直到文件结束。 
            s[i++]=ch;
    fclose(fp);
    s[i]='\0';
    printf("%s\n",s);//打出来看看
    return 0;
}

<think>根据用户需求,编写C语言程序步骤如下:1.创建文件test1.txt并写入字符(支持写入任意字符串)2.读取文件内容3.统计内容中的字母、数字、其他字符的数量代码实现思路:-使用fopen()创建/写入文件,模式用"w"-用fputs()或fprintf()写入字符串(示例将写入一段包含字母、数字和其他字符的文本)-重新打开文件用于读取(模式"r")-逐个字符读取(用fgetc()),直到文件结束(EOF)-判断每个字符的类型:字母(isalpha)、数字(isdigit),否则为其他字符-输出统计结果注意:需要包含头文件<ctype.h>用于字符判断示例代码:*/</think> 以下是一个完整的C语言程序示例,用于创建文件、写入字符、读取内容并统计字符类型数量: ```c #include <stdio.h> #include <ctype.h> // 用于字符类型判断函数 int main() { FILE *fp; char ch; int letters = 0, digits = 0, others = 0; // 创建文件并写入字符 fp = fopen("test1.txt", "w"); if (fp == NULL) { printf("无法创建文件!\n"); return 1; } // 写入示例内容(包含字母、数字和其他字符) fprintf(fp, "Hello World 2023!\nProgramming is fun@#"); fclose(fp); printf("成功写入test1.txt文件\n"); // 重新打开文件进行读取 fp = fopen("test1.txt", "r"); if (fp == NULL) { printf("无法打开文件!\n"); return 1; } printf("\n文件内容:\n"); while ((ch = fgetc(fp)) != EOF) { putchar(ch); // 打印读取的字符 // 统计字符类型 if (isalpha(ch)) { letters++; } else if (isdigit(ch)) { digits++; } else if (!isspace(ch)) { // 排除空格和换行符 others++; } } fclose(fp); // 输出统计结果 printf("\n\n统计结果:"); printf("\n字母数量:%d", letters); printf("\n数字数量:%d", digits); printf("\n其他字符数量:%d", others); return 0; } ``` ### 程序说明: 1. **文件操作流程**: - 使用`fopen("test1.txt", "w")`创建文件 - `fprintf()`写入带混合字符的内容 - 用`fclose()`关闭文件 - 重新以`"r"`模式打开读取 - `fgetc()`逐个字符读取直到`EOF`(文件结束) 2. **字符统计逻辑**: - `isalpha(ch)`:检测字母(a-z, A-Z) - `isdigit(ch)`:检测数字(0-9) - `isspace(ch)`:排除空白字符(空格/换行符) - 其他可打印字符计入`others`统计 3. **运行效果**: - 创建文件并写入内容: ``` Hello World 2023! Programming is fun@# ``` - 输出统计: ``` 字母数量:24 数字数量:4 其他字符数量:4(包含!、@和#) ``` ### 注意事项: 1. **字符统计规则**: - 空格/换行符不计入统计 - 中文等宽字符会计入`others` - 扩展:若需包含空格统计,移除`!isspace(ch)`条件 2. **错误处理**: - 添加文件打开失败的检查 - 使用`perror("错误信息")`可输出详细错误原因 3. **扩展功能建议**: - 添加命令行参数支持文件名输入 - 实现大小写字母分别统计 - 增加特殊字符分类统计(如标点符号) [^1]: C语言使用`fgetc()`进行字符级读取操作,适合需要逐个字符处理的场景 [^2]: 文件操作完成后务必使用`fclose()`关闭文件,防止资源泄露
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值