首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

输出乱码有关问题

2012-05-06 
输出乱码问题这段代码最后的输出是乱码,不知道问题在哪?请大家帮忙指正,多谢了!!C/C++ code#include stdi

输出乱码问题
这段代码最后的输出是乱码,不知道问题在哪?请大家帮忙指正,多谢了!!

C/C++ code
#include <stdio.h>#include <string.h>int main(){  int i,j;  char buf[] = "123456781212121212121212121212121212121212";  char tmp_buf[512];  int len = strlen(buf);  for (i = 0,j = 0; i < len && j < 512; i++) {    if (i && ((i % 8) == 0))        tmp_buf[j++] = '\n';    sscanf(&buf[i],"%x",&tmp_buf[j++]);    tmp_buf[j++] = ' ';  }tmp_buf[j] = '\0';printf("%s\n",tmp_buf);return 0;}


[解决办法]
tmp_buf里面只会有空格和回车字符,怎么输出你想要的字符呢?
[解决办法]
sscanf(&buf[i],"%x",&tmp_buf[j++]);
改为:sscanf(&buf[i],"%c",&tmp_buf[j++]);

晕,楼主比较粗心哈
[解决办法]
用%c而不是%x
[解决办法]
如果你想用%x,那么不能直接用源串,因为会把整个字符串转成整形然后转16进制,要用临时串只拷贝1个字符
另外用%x转换后不能直接printf输出
[解决办法]
不明白LZ的意图,请明示~
[解决办法]
输出连续2个66,怎么也想不到如何与原数据对应~
[解决办法]
探讨
希望得到的输入格式如下,都是六十进制 存在tmp_buf中
printf输出后得到下面的样式

66 66 a5 9b 0b 57 02 94
cc a5 9b ac ae fe ef ef
ac ca ca ca ca ca ca ca
23 cd de de de de de de

[解决办法]
你这段代码问题很多

[code=C/C++][/code]
#include <stdio.h>
#include <string.h>

int main()
{
int i,j;
char buf[] = "123456781212121212121212121212121212121212";
char tmp_buf[512];
int len = strlen(buf);

for (i = 0,j = 0; i < len && j < 512; i++) {
if (i && ((i % 8) == 0))
tmp_buf[j++] = '\n';
sscanf(&buf[i],"%x",&tmp_buf[j++]);//你这样存入tmp_buf[j++]中的是int型的数值
tmp_buf[j++] = ' ';
}
tmp_buf[j] = '\0';
printf("%s\n",tmp_buf);//这个时候输出的是char型的输出的是123456781212121212121212121212121212121212对应的是ASC
return 0;
}

热点排行