C Concat 字符串 Int Sprintf

C Concat String Int Sprintf

为什么第二个 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

你的情况

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

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

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

  • 使它们指向 statically/automatic 分配的变量或
  • 使用像 malloc() 或 family 这样的内存分配函数。