许多C语言参考书中都没涉及到这个问题,程序中多为处理英文变量和英文字符串,当然
存储汉字应该用字符数组,这一点是肯定的,关键问题是汉字在你的计算机系统上占几个字节呢?
你用这个语句就知道大小了:
printf("%d",strlen("大小")); //输入2个汉字的大小
但是每个系统中汉字的大小又是不同的,幸运的是多数系统中汉字的大小是相同的。
但还得注意汉字的半角和全角问题哦
那我用个简单的例子说明汉字的输入和输出:
#include<iostream>
using namespace std;
int main()
{
char a[3];
cin>>a;
cout<<a;
return 0;
}
输入:是
输出:是
另外一程序是为了识别汉字来实现一拷贝
/*
这是汉字编码的机制所定的.为了很英文编码区分.
一般情况下当第一个字节高位为1的时候,
默认这个字节和后面的一个字节组合起来构成一个汉字~
*/
#include<stdio.h>
#include <string.h>
#define SIZE 3
void my_strcopy(char dest[],char s[],int N)
{
int i=strlen(s);
if(N>=i) //如果N大于i则直接拷贝。
{
strcpy(dest,s);
return;
}
int flag=0;//添加一个标志,用来标志所加的中文的位数
for(int j=0;j<N-1;j++) //N-1用来腾出一位存'/0',字符串数组需要
{
if(s[j]<0)//因为如果是中文字符,它的值是小于零的。
flag++;
dest[j]=s[j];
}
if(flag%2!=0)//所加中文如果是奇数,则证明最后一位是中文,且只把它的一半给加进来了。
dest[--j]='/0';
else
dest[j]='/0';
printf("%d",flag);
}
void main()
{
char s[]="中文windows98使用说明";
char dest[SIZE];
my_strcopy(dest,s,SIZE);
printf("%s/n",dest);
}
博客主要探讨C语言中汉字存储问题,指出程序多处理英文,存储汉字用字符数组,不同系统汉字大小或有差异,还需注意半角全角。给出汉字输入输出示例,以及为识别汉字实现拷贝的程序,介绍了汉字编码机制。
8337

被折叠的 条评论
为什么被折叠?



