观察的越细,问题就越多,求教%s和%S的区别以及对char*字符串内容的识别;
问题比较多,一个一个来
1 :经常都用sprintf,sscanf来处理字符串,今天遇到了把wchar*转换为char*的小问题,随后发现还有 wsprintfA/W、swprintf、swscanf,但是却没有找到wsscanf,感觉有点意外,因为不明确这几个函数在功能上除wchar和char以外的区别,请大家帮忙解释下。
2:今天写了这么个例子来做实验:
WCHAR ww[] = L "我是一个中国人 ";
char cc[32] = {0};
wsprintf(cc, "%S ",ww);//%S and %s
MessageBox(cc); // "我是一个中国人 "
wsprintf(cc, "%s ",ww);
MessageBox(cc); // ".b/f "
结果写在上面了,同样都是char*,为什么一个按双字节读取,另一个却读ASC码呢。我突然才发现一个这么基本的问题我还没有搞清楚,char*里的字符串究竟按什么方法来读取是由编译器决定还是CPU在分析?百思不解、一头雾水,希望大哥们能详细点帮我解释一下或者提供点资料给我。。。
[解决办法]
s是将char转换为wchar_t,S是将wchar_t转换为char,所以LZ的情况应该使用S.