题目描述:
在GBK编码下,请编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但是要保证汉字不能被截取半个,同时忽略字符串中的数字后输出最终结果
输入描述:
一行字符串和待接截取的字节数
输出描述:
按字节截取的字符串
示例1
输入
华HUA
输出
华HU
备注
保证汉字不被截取半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
#include<stdio.h>
#include<string.h>
int main()
{
char str[1000];
char newstr[1000];
int cutnum;
int flag=0;
int size = 0;
int i=0;
int j=0;
while((str[size++] = getchar()) != '\n');
scanf("%d",&cutnum);
for(i=0; i<size; i++) //剔除字符串中的数字
{
if(str[i]>='0'&&str[i]<='9')
continue;
else
{
newstr[j] = str[i];
j++;
}
}
for(i=0; i<j; i++)
{
if((unsigned char)newstr[i]>128 && (unsigned char)newstr[i+1]>128) //判断是否为GBK编码下的汉字
{
i++;
flag = 1;
}
else
flag = 0;
if(i>cutnum-1)
break;
else
{
if(flag)
printf("%c%c",newstr[i-1],newstr[i]);
else
printf("%c",newstr[i]);
}
}
return 0;
}