|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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的说法。
不过乱码的原因在这儿
这儿应该把后置++去掉,不然你每循环一次就漏一个字节
|
|