为什么第二个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
答案 0 :(得分:1)
在你的情况下
sprintf(jc, "%d", jobcounter);
sprintf(tn, "%d", thread);
导致undefined behavior,因为这些指针(第一个参数)都没有指向任何有效的内存。
您需要确保用于访问(ny)内存位置的指针指向有效内存。你可以
malloc()
或家庭。