C编程练习010

1、题目

统计文件的字符数

2、代码

/*******************************************************************************************************
** 题    目: 统计文件的字符数
********************************************************************************************************/
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char fname[80];/*存贮文件名*/
    FILE *rfp;
    long count;/*文件字符计数器*/

    printf("请输入文件名:");
    scanf("%s",fname);
    if((rfp=fopen(fname,"r"))==NULL)
    {
        printf("Can't open file %s.\n",fname);
        exit(1);
    }
    count = 0;
    while(fgetc(rfp)!=EOF)
    {
        count++;
    }
    fclose(rfp);/*关闭文件*/
    printf("共有 %ld 个字符在文件 %s 中。\n",count,fname);

    return 0;
}

3、测试结果及分析

首先,在与该源文件相同文件夹下建一个test.txt的文件,里面输入你要统计的内容:

其实,不同的编码,其字符(中文、英文字符)的占用的字节数是不一样的。下面测试一下:

(1)utf-8编码下的英文字符统计

可见,utf-8编码下,一个英文字符占用一个字节。

(2)utf-8编码下的中文字符统计

可见,utf-8编码下,一个中文字符占用三个字节。

(3)GB2312编码下的英文字符统计

可见,GB2312编码下,一个英文字符占用一个字节。

(4)GB2312编码下的中文字符统计

可见,GB2312编码下,一个中文字符占用两个字节。

4、总结

中、英文字符占用的字节数与编码有关。在notepad++中可修改编码,如:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【C语言笔记】getchar()、getche()、getch()的区别

    函数功能:读取控制台输入的字符,并保存在键盘缓冲区中。直到用户按回车为止(回车字符也放在缓冲区中)。

    正念君
  • 【C语言笔记】ASCII码可见字符与不可见字符

    ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑...

    正念君
  • 【C语言笔记】操作位的技巧

    操作位有两种方法,一种是位字段,另一种是使用按位运算符。位字段的方法可查看往期笔记:【C语言笔记】位域。本文介绍使用按位运算符操作位的方法。下表为几种位操作符及...

    正念君
  • QR 数据编码详解(二)

    每种编码模式针对其字符,不断优化以产生最短的编码二进制串。在此过程中它们采用的编码方法是不同的,本篇将主要解释数据编码过程。

    TTTEED
  • 字符,字符串,字符编码的区别

    字符集和字符编码一般都是成对出现的,如ASCII、IOS-8859-1、GB2312、GBK,都是即表示了字符集又表示了对应的字符编码,以后统称为编码。

    居士
  • 漫画:“哈夫曼编码” 是什么鬼?

    在上一期,我们介绍了一种特殊的数据结构 “哈夫曼树”,也被称为最优二叉树。没看过的小伙伴可以点击下方链接:

    小灰
  • Python之石头剪刀布

    import random #根据输入参数显示对应结果 while True: #获取输入参数 play = int(input("请输入您得动作(0剪刀 1石...

    py3study
  • 清空messages没有权限的解决方法

    一大早接到报警提示系统盘容量不足了,冲到/var/log下查看messages日志已经很大了,所以就想着把messages清空一下,以此来释放空间.在删除的时...

    行 者
  • Git - Tag

    Lightweight Tags. ? 如果想标注某个事件/里程碑, 就需要使用git tag tag名. ? 列出所有的tag: git tag --list...

    solenovex
  • 从零开始的Flutter之旅: InheritedWidget

    在之前的文章中,介绍了 StatelessWidget 与 StatefulWidget 的特性与它们的呈现原理。

    Rouse

扫码关注云+社区

领取腾讯云代金券