标题:怎么判断一个字符是不是全角字符,并且区分是汉字还是汉语符号
只看楼主
星系隐
Rank: 2
等 级:论坛游民
威 望:1
帖 子:96
专家分:36
注 册:2018-6-16
 问题点数:0 回复次数:3 
怎么判断一个字符是不是全角字符,并且区分是汉字还是汉语符号
while((e=fgetc(aa))!=EOF)
        {   if(e<0)
zz++;
这样可以判断一个字符是不是双字节符号,但是问题是会统计所有的双字节符号,我希望能有一个统计一个字符是不是汉字的方法,在线等挺急的!!拜托了!能不能回帖时写上代码...救命..
搜索更多相关主题的帖子: 判断 字符 全角 汉字 符号 
2018-06-21 09:53
星泪成寒
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:75
专家分:539
注 册:2013-5-19
得分:0 
你说双字节 应该指的是gdb2312编码的汉字, utf8编码汉字得3~4个字节好像.
程序代码:
#include <stdio.h>

int main(void)
{
    int ch, gb2312 = 0;
    FILE* fp = NULL;

    /* GB2312 */
    fp = fopen("1.txt", "r");
    if (NULL == fp) {
        perror("fopen failed");
        return 127;
    }

    while ((ch = fgetc(fp)) != EOF) {
        if (ch < 0x7f) { /* ascii range */
            printf("ascii char    : %c\n", ch);
        }
        if ((ch >= 0xa1) && (ch <= 0xfe)) { /* gdb2312 range */
            if (gb2312) {
                gb2312 <<= 8;
                gb2312 += ch;
                if (gb2312 >= 0xb0a1) { /* hanzi range */
                    printf("GB2312 hanzi  : %x\n", gb2312);
                }
                else {
                    printf("GB2312 symbol : %x\n", gb2312);
                }
                gb2312 = 0;
            }
            else {
                gb2312 = ch;
            }
        }
        else { /* unknown */
            printf("unknown byte %x\n", ch);
        }
   

    }

    return 0;

}

2018-06-21 10:31
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
回复 2楼 星泪成寒
ascii 范围到127
你的代码才到126

https://zh.
2018-06-21 10:33
星系隐
Rank: 2
等 级:论坛游民
威 望:1
帖 子:96
专家分:36
注 册:2018-6-16
得分:0 
回复 2楼 星泪成寒
蟹蟹大哥,今天早上去交文本编辑的课设时数据结构老师让我做这个真的把我难住了..后来我试着吧全角符号做成字符来对比..不是已经输入的全角字符的部分,就是汉字..大概是这样,才勉强合格的
2018-06-21 20:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-488047-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.245262 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved