1 做法
1.1 一维字符数组元素 读取汉字 当成单个字符
printf("%c%c",str[i], str[i+1]);
看似输出两个字符,其实会输出1个汉字!
代码
#include<bits/stdc++.h>
#define num 100
using namespace std;
void print(char str[], int p, int length)
{
int i;
cout << "第" << p << "个字起,连读" << length << "个字:" << endl;
if((2*(p - 1) + 2*length - 1) >= num - 1 || p < 1) // 检查参数位置是否越界
cout << "参数有问题!" << endl << endl;
else
{
for(i = 2*(p - 1); i <= (2*(p - 1) + 2*length - 1); i += 2 )
printf("%c%c",str[i], str[i+1]);
}
cout << endl << endl;;
}
int main()
{
char sex[num]="男女班级" ;
int p, length;
cout << "sex[] = ";
puts(sex);
cout << endl;
cout <<"puts(sex);后:" << endl;
puts(sex);
cout <<endl;
cout <<"printf(\"%s\\n\", sex);后:" << endl;
printf("%s\n", sex);
cout << endl;
//输出若干个汉字
p = 1;
length = 2;
print(sex, p, length);
system("pause");
return 0;
}
1.2 一维字符数组元素 读取汉字 当字符串
一个汉字存进 字符数组,貌似是占 1个字节单元,其实是 2个字节单元!(1字节 = 8个位)
也就是:
char str[ length ] = “xxx(xxx是一串 n个汉字的字符串)”;
那么必须 length > (2*n + 1 ) !!!(一个汉字占2个字节!)
这样的话,str[i] 是读不出1个汉字的!
str[0] + str[1]作为字符串输出 才是1个汉字
同理:str[2] + str[3]、str[4] + str[5]…分别是单个汉字
#include<bits/stdc++.h>
#define num 100
using namespace std;
void print(char str[], int p, int length)
{
int i;
char string[num];
cout << "第" << p << "个字起,连读" << length << "个字:" << endl;
if((2*(p - 1) + 2*length - 1) >= num - 1 || p < 1) // 检查参数位置是否越界
cout << "参数有问题!" << endl << endl;
else
{
for(i = 2*(p - 1); i <= (2*(p - 1) + 2*length - 1); i++ )
string[i - 2*(p - 1)] = str[i];
string[i - 2*(p - 1)] = '\0';
puts(string);
}
cout << endl;
}
int main()
{
char sex[num]="男女班级" ;
int p, length;
cout << "sex[] = ";
puts(sex);
cout << endl;
cout <<"puts(sex);后:" << endl;
puts(sex);
cout <<endl;
cout <<"printf(\"%s\\n\", sex);后:" << endl;
printf("%s\n", sex);
cout << endl;
//错误:
//cout << "sex[0] = " << sex[0] << endl << endl;
//printf("sex[0] =%c\n", sex[0]);
// cout << "putchar(sex[0]);后:"<< endl;
// cout << "sex[0] = " << endl;
// putchar(sex[0]);
//输出若干个汉字
p = 1;
length = 2;
print(sex, p, length);
system("pause");
return 0;
}
1.3 二维字符数组 读取汉字
不得已,不要用这样办法…
把汉字存入二维数组,也就是每个汉字当成一个字符串 来存储
#include<bits/stdc++.h>
using namespace std;
int main()
{
char sex[][9]={"男","女" };
cout << "sex[0] = ";
puts(sex[0]);
cout << "sex[1] = ";
puts(sex[1]);
cout << endl;
//
cout << "输出单个字符:" << endl << endl;
cout << "cout << \"sex[0][0] = \"; 后:" << endl;
cout << "sex[0][0] = ";
cout << sex[0][0] << endl << endl;
cout << "printf(\"%c\\n\\n\", sex[0][0]); 后:" << endl;
cout << "sex[0][0] = ";
printf("%c\n\n", sex[0][0]);
cout << "putchar(sex[0][0]); 后:" << endl;
cout << "sex[0][0] = ";
putchar(sex[0][0]);
cout << endl << endl << endl;
//
cout << "输出字符串:" << endl << endl;
cout << "cout << \"sex[0] = \"; 后:" << endl;
cout << "sex[0] = " << sex[0] << endl << endl;
cout <<"printf(\"%s\\n\", sex[0]);后:" << endl;
printf("%s\n", sex[0]);
cout << endl;
cout <<"puts(sex[0]); 后:" << endl;
puts(sex[0]);
cout <<endl;
system("pause");
return 0;
}