当前位置: 代码迷 >> C语言 >> [原创]wchar_t在汉字处理中的应用
  详细解决方案

[原创]wchar_t在汉字处理中的应用

热度:382   发布时间:2006-06-22 17:41:34.0
[QUOTE]怎样输出VC的__int64型整数?[/QUOTE]

[CODE] __int64 x=43434294967295;
printf("%I64u\n", x);[/CODE]
----------------解决方案--------------------------------------------------------
在TC下直接输出汉字???????????????????????

----------------解决方案--------------------------------------------------------

//__int64型整数(64位,VC++6.0提供)如何输出?
#include<stdio.h>
main()
{
__int64 x= -9551616;
printf("%I64d\n",x);//与printf("%I64i\n",x);等价
printf("%I64u\n",x);//按unsigned __int64进行输出
}

/*------------------*
屏幕输出如下
-9551616
18446744073700000000
*-------------------*/


----------------解决方案--------------------------------------------------------
运行结果:

上海自来水来自海上
yes
Press any key to continue...

我有好几个地方搞不懂:
1,“判回文”是什么意思啊?
2, “char *p=(char*)s;”这种定义方法首见,怎么会有“(char*)s”的写法?我知道指针p是指向s[10],可还是不理解。
3,“for(i=0;s[i];i++,p++,p++)printf("%c%c",*(p+1),*p);”这样不是先输后一个字在输前一个字了吗?为什么不“printf("%c%c",*p,*(p+1));”呢?
请"-★-"指点,谢谢!

----------------解决方案--------------------------------------------------------
以下是引用langzi546在2006-6-22 20:01:15的发言:
运行结果:

上海自来水来自海上
yes
Press any key to continue...

我有好几个地方搞不懂:
1,“判回文”是什么意思啊?
2, “char *p=(char*)s;”这种定义方法首见,怎么会有“(char*)s”的写法?我知道指针p是指向s[10],可还是不理解。
3,“for(i=0;s[i];i++,p++,p++)printf("%c%c",*(p+1),*p);”这样不是先输后一个字在输前一个字了吗?为什么不“printf("%c%c",*p,*(p+1));”呢?
请"-★-"指点,谢谢!

1。“上海自来水来自海上”倒过来念也是一模一样的,所以称为“回文”。古时候不就有回文诗嘛!
2。p的“基类型”是char,你让它直接指向 wchar_t s[ ] 的s,类型失配。所以要进行
“强制类型转换”(char*)s
3。这件事最好上机试一下,你就恍然大悟了。如果再悟不出来,尽管发帖问。

----------------解决方案--------------------------------------------------------

我发现一个有趣的现象
你打开一个记事本,输入 连通 或者 联通 连同 炼铜 两个字,然后保存后关闭,再打开出现了一个小黑块
只要输入lian tong这两个字的就会有问题,可能是微软的bug吧
看来联通就是没有移动牛啊,微软的程序都不支持它,哈哈


----------------解决方案--------------------------------------------------------

/*进一步熟悉VC之wprintf(L"%s%c")的用法*/
#include<stdio.h>
#include<locale.h>
main()
{
_wsetlocale(LC_ALL,L"chs");

{
wchar_t str[]=L"上海自来水来自海上";
//short str[]=L"上海自来水来自海上";也可
wprintf(L"%s\n",str);
}

{
wchar_t a=L'下',b=L'海',*p=L"经",*q=L"商";
//short a=L'下',b=L'海',*p=L"经",*q=L"商";也行
wprintf(L"%c%c%c%c\n",a,b,*p,*q);
}

}


----------------解决方案--------------------------------------------------------
以下是引用young在2006-6-22 20:17:53的发言:

我发现一个有趣的现象
你打开一个记事本,输入 连通 或者 联通 连同 炼铜 两个字,然后保存后关闭,再打开出现了一个小黑块
只要输入lian tong这两个字的就会有问题,可能是微软的bug吧
看来联通就是没有移动牛啊,微软的程序都不支持它,哈哈


----------------解决方案--------------------------------------------------------

提示: 作者被禁止或删除 内容自动屏蔽

2006-06-23 14:40:36
baidu

等 级:新手上路
威 望:8
帖 子:3812
专家分:0
注 册:2005-11-4
  得分:0 
wchar_t
就是
typedef unsigned short wchar_t;

----------------解决方案--------------------------------------------------------