代码在字符串中打印空格

时间:2014-05-29 00:47:02

标签: c

我有下一个代码,其中我有一个字符串“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;
}

感谢

2 个答案:

答案 0 :(得分:2)

malloc中的内存已包含您需要重置的数据。 malloc分配内存它没有初始化它,所以你只是得到以前的随机垃圾。

memset(cod_maq, 0, size_of_cod_maq)

答案 1 :(得分:0)

sprintf(c,"%X",c[i]);:非常糟糕。

修复如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
    int i,lon;
    char *cod_maq, *c = {"hello world"};
    lon = strlen(c);
    cod_maq = (char*)malloc((lon*2 + 1) * sizeof(char));//2 required per character
    for(i = 0; i < lon; i++){
        sprintf(cod_maq + i*2, "%02X", c[i]);
    }
    printf("[%s]\n", cod_maq);
    free(cod_maq);
    return 0;
}