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语言怎样判断用户输入的是中文?的主要内容,如果未能解决你的问题,请参考以下文章