我有下一个代码,其中有一个字符串“hello world”,它必须将每个字符转换为其 ASCII 值,但它不是打印 [68656C.....] 而是在后面打印一些空格'[',像这样 [......68656C]。我找不到原因
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,lon;
char *cod_maq,*c = {"hello world"},c[2];
lon = strlen(c);
cod_maq = (char*)malloc((lon+1)*sizeof(char));
for(i = 0;i < lon;i++)
{
sprintf(c,"%X",c[i]);
strcat(cod_maq,c);
}
printf("[%s]\n",cod_maq);
return 0;
}
谢谢
最佳答案
malloc 中的内存已包含需要重置的数据。 malloc 分配内存,但不会对其进行初始化,因此您只会得到之前存在的随机垃圾。
memset(cod_maq, 0, size_of_cod_maq)
关于代码打印字符串内的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23924091/