C语言怎样判断用户输入的是中文?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言怎样判断用户输入的是中文?相关的知识,希望对你有一定的参考价值。

我试过好多方法了,都不行啊。比如我想过用sizeof() 和 strlen() 我本以为strlen()如果接受一个中文文字就返回1,然后用sizeof()的返回值除以strlen()的返回值就是2,如果不是中文返回的是1,这样是不行的,因为当strlen()接受一个中文文字时返回的也是2。晕了!

判断输入的是中文还是英文很简单:
1、首先,要确认数据类型是字符型。
2、英文或一些特殊字符的ASCII码小于0x7f。
3、中文是以区位码形式出现的,ASCII码大于0xa0。
比如:
#include <stdio.h>
#include<string.h>
int main()

char* ss="hello世界";
int i;
while(*str)

if((unsigned)*str>=161) str+=2;i++;
else str++;

printf("Chinese char number is:%d\\n",i);
return 0;
参考技术A //给一个例子。希望对你有帮助#include <stdio.h>
#include <string.h>
void main()

char str[]="123abc万高超.,!";
char strBuf[20]=0;
int j=0,nCount=(int)strlen(str);
for(int i=0;i<nCount;i++)
//如果小于0则是中文,且后面一个也是中文。
if(str[i]<0)

strBuf[j++]=str[i++];
if(i<nCount)strBuf[j++]=str[i];


printf("中文字符有%d个,它们是:\"%s\"",strlen(strBuf)/2,strBuf);
参考技术B 简单判断:大于127,但是只限中文和英文两种情况下

C语言 读取中文

比如我希望用户输入一个中文字符串“哈哈哈”,if用户输入的是“哈哈哈”,就printf("答案正确");如果不是“哈哈哈”就printf("答案错误")

#include<stdio.h>
main()

FILE *fp;
char ch;
if((fp=fopen("c:\\\\stu.txt","rt+"))==NULL)

printf("\\nCannot open file strike any key exit!");
getch();
exit(1);

ch=fgetc(fp);
while(ch!=EOF)

putchar(ch);
ch=fgetc(fp);

fclose(fp);
参考技术A #include<string.h>
#include<stdio.h>
int main(void)

    char s[32];
    while(gets(s) != NULL)
    
        if(!strcmp("哈哈哈", s)) printf("答案正确\\n");
        else printf("答案错误\\n");
    
    return 0;

以上是关于C语言怎样判断用户输入的是中文?的主要内容,如果未能解决你的问题,请参考以下文章

c语言 如何判断输入的是数字还是字母

c语言中如何判断输入的是字符还是数字

c语言 检查输入是不是合法

c++判断输入的是不是为数字?

C语言程序设计判断某一年是不是是闰年

c语言模拟用户输入三次密码并判断是否正确