输出乱码有关问题


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

  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; }



c语言 基本概念 程序开发

silber 11 years, 6 months ago


你这段代码问题很多

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

int main()
{
int i,j;
char buf[] = "123456781212121212121212121212121212121212";
char tmpbuf[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",&tmpbuf[j++]);//你这样存入tmpbuf[j++]中的是int型的数值
tmpbuf[j++] = ' ';
}
tmp
buf[j] = '\0';
printf("%s\n",tmp_buf);//这个时候输出的是char型的输出的是123456781212121212121212121212121212121212对应的是ASC
return 0;
}

旅人1999 answered 11 years, 6 months ago


<fieldset> <legend> 探讨 </legend>
希望得到的输入格式如下,都是六十进制 存在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
</fieldset>


习惯性沉默 answered 11 years, 6 months ago


输出连续2个66,怎么也想不到如何与原数据对应~

新岛还我绫学姐 answered 11 years, 6 months ago


不明白LZ的意图,请明示~

KDM小八 answered 11 years, 6 months ago


如果你想用%x,那么不能直接用源串,因为会把整个字符串转成整形然后转16进制,要用临时串只拷贝1个字符
另外用%x转换后不能直接printf输出

sunmoon answered 11 years, 6 months ago


用%c而不是%x

你纱咸鱼中 answered 11 years, 6 months ago


sscanf(&buf[i],"%x",&tmpbuf[j++]);
改为:sscanf(&buf[i],"%c",&tmp
buf[j++]);

晕,楼主比较粗心哈

午夜的空想者 answered 11 years, 6 months ago


tmp_buf里面只会有空格和回车字符,怎么输出你想要的字符呢?

snike answered 11 years, 6 months ago

Your Answer