马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
每个中文字符在系统中是占用 3 个字节的存储空间,并且都是负数。思路是:检测到ch为\0结束程序,检测到ch<0,复制三个字节,大于0复制一个字节
但是结果乱码,能不能帮我看下代码哪有问题,谢谢 代码没多长#include <stdio.h>
#define MAX 1024
int main()
{
char str1[MAX],str2[MAX];
char *target1,*target2;
char ch;
target1 = str1;
target2 = str2;
printf("请输入一串字符串,可以包含中文!");
fgets(str1,MAX,stdin);
while(1)
{
ch = *target1++;
if(ch =='\0')
{
break;
}
if((int)ch<0)
{
*target2++ = *target1++;
*target2++ = *target1++;
*target2++ = *target1++;
}
else
{
*target2++ = *target1++;
}
}
printf("%s",str2);
return 0;
}
同意jackz007的说法。
不过乱码的原因在这儿 这儿应该把后置++去掉,不然你每循环一次就漏一个字节
|