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 这样的内存分配函数。
为什么第二个 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 这样的内存分配函数。