判断字符串中是否有中文字符 c++
从内容为ab├na├├sb中├华├啊ajhks├的文件中读取到数组a[100],并判断读取a[i]=='├';假如是则输出RIGHT,不是则ERROR。#include<...
从内容为ab├na├├sb中├华├啊ajhks├的文件中读取到数组a[100] ,并判断读取a[i]=='├';假如是 则输出RIGHT,不是则ERROR。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <iostream>
//using namespace std;
int main()
{
FILE *fp1;
char a[100];
int i=0;
char in_name[30];
printf("输入将读入的文件名\n");
gets(in_name);/*得到要的文件名 */
fp1=fopen(in_name,"r");
if(fp1==NULL)
{
printf("can not open in_name\n");
exit(1);
}
while(!feof(fp1))
{
a[i]=fgetc(fp1);
i++;
fclose(fp1);
a[i-1]='\0';
// a[0]='│';
// if(a[0]=='│')printf("sjj\n");
for(int j=0;j<i;j++)
{
if(a[j] > 160)
if(a[j]=='├')
printf("sjj\n");
}
printf("%s",a);
return 0;
}
}
这个是我写的一段程序 不过就是读入的时候都是单字节的,请各位大大给我个能直接读入中文字符的函数, 像读完后a[1]里就放以个中文字符‘中’;
2楼的宽字符串如何使用啊 能不能给我个例子要求带输入输出还有字符间比较的!!谢了 还有虽然4楼方法完全可行,但我急需字符间比较的方法! 展开
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <iostream>
//using namespace std;
int main()
{
FILE *fp1;
char a[100];
int i=0;
char in_name[30];
printf("输入将读入的文件名\n");
gets(in_name);/*得到要的文件名 */
fp1=fopen(in_name,"r");
if(fp1==NULL)
{
printf("can not open in_name\n");
exit(1);
}
while(!feof(fp1))
{
a[i]=fgetc(fp1);
i++;
fclose(fp1);
a[i-1]='\0';
// a[0]='│';
// if(a[0]=='│')printf("sjj\n");
for(int j=0;j<i;j++)
{
if(a[j] > 160)
if(a[j]=='├')
printf("sjj\n");
}
printf("%s",a);
return 0;
}
}
这个是我写的一段程序 不过就是读入的时候都是单字节的,请各位大大给我个能直接读入中文字符的函数, 像读完后a[1]里就放以个中文字符‘中’;
2楼的宽字符串如何使用啊 能不能给我个例子要求带输入输出还有字符间比较的!!谢了 还有虽然4楼方法完全可行,但我急需字符间比较的方法! 展开
展开全部
#include <iostream>
using namespace std;
int main()
{
char a[10]="C程序设计";
int b=0;
for(int i=0;i<=strlen(a);i++)
{b=a[i];printf("%d ",b);}
return 0;
}
汉字的编码要占两个字符,而且每个字符均为负值,而英文字符为非负值。如上例所示。
根据这一性质就可以用来甄别是否为汉字了。
using namespace std;
int main()
{
char a[10]="C程序设计";
int b=0;
for(int i=0;i<=strlen(a);i++)
{b=a[i];printf("%d ",b);}
return 0;
}
汉字的编码要占两个字符,而且每个字符均为负值,而英文字符为非负值。如上例所示。
根据这一性质就可以用来甄别是否为汉字了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是不可能的,中文字符就是要占两个CHAR位。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单字符也是可以判断的,因为中文的两个字符都是负数
下面是一个测试,你可以根据你的需要改写:
#include <stdio.h>
void main()
{
char name[]="姓-名只能*+用=├中7文";
char tmep[3]="";
char *Name = name;
while(*Name!='\0')
{
if((int)*Name>0)
printf("%c 非中文\n", *Name);
else
{
tmep[0] = *Name;
Name++;
tmep[1] = *Name;
printf("%s 中文\n", tmep);
}
Name++;
}
}
也可以将“├”当作字符串来处理,这样就成了查找字符串的问题。
下面是一个测试,你可以根据你的需要改写:
#include <stdio.h>
void main()
{
char name[]="姓-名只能*+用=├中7文";
char tmep[3]="";
char *Name = name;
while(*Name!='\0')
{
if((int)*Name>0)
printf("%c 非中文\n", *Name);
else
{
tmep[0] = *Name;
Name++;
tmep[1] = *Name;
printf("%s 中文\n", tmep);
}
Name++;
}
}
也可以将“├”当作字符串来处理,这样就成了查找字符串的问题。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义成宽字符串 wchar
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询