C Concat String Int Sprintf

时间:2017-04-28 16:49:35

标签: c strcpy strcat

为什么第二个sprintf不起作用?

char* jc;
    char* tn;
    char* result = malloc((256)*sizeof(char));
    int thread=99;
    int jobcounter=88;
    sprintf(jc, "%d", jobcounter);
    sprintf(tn, "%d", thread);
    strcpy(result,"file_");
    strcat(result,jc);
    strcat(result,"_");
    strcat(result, tn);
    strcat(result,".html");
    printf("%s",result);

输出:

  

file_88_Þ* m.html

1 个答案:

答案 0 :(得分:1)

在你的情况下

sprintf(jc, "%d", jobcounter);
sprintf(tn, "%d", thread);

导致undefined behavior,因为这些指针(第一个参数)都没有指向任何有效的内存。

您需要确保用于访问(ny)内存位置的指针指向有效内存。你可以

  • 使它们指向静态/自动分配的变量或
  • 使用内存分配器功能,如malloc()或家庭。