代码打印字符串内的空格

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

谢谢

最佳答案

malloc 中的内存已包含需要重置的数据。 malloc 分配内存,但不会对其进行初始化,因此您只会得到之前存在的随机垃圾。

memset(cod_maq, 0, size_of_cod_maq)

关于代码打印字符串内的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23924091/

相关文章:

自定义过滤器功能不会产生预期的输出

c - gcc48(从 Homebrew 软件下载)找不到stdio.h

c - 反转字符串时发生段错误

c - 段错误 : _IO_feof (fp=0x0) at feof. c:35

c - 最小/最大/平均语言 : c

c - 如何在不使用模数(%)的情况下打印素数?

c - 如何在 32 位时间库中使用 mktime64()、time64() 和 localtime64() 函数?

c - 在子进程中生成随机数

c++ - 可以将 &my_boost_array_variable[2] 传递给期望 void* 的 C 函数吗?

C fprintf/fscanf 优化大文件速度