質問: c言語のポインタが上手くできません sprintfを使って、str1とstr2を連結させてstr3に代入したいです。 実行結果は、 文字列 1 : abcd 文字列 2 : efgh 連結結果: abcdefgh という風にしたいです。 <コード> #include #include char *concut(char *str1, char *str2){ char **str3; str3=malloc(sizeof(char *)*256); sprintf(str3,str1,str2); } int main(void){ char str1[256]="abcd"; char str2[256]="efgh"; char *str3; str3=concut(str1, str2); printf("文字列1 :%s \n",str1); printf("文字列2 :%s \n",str2); printf("連結結果:%s \n",str3); free(str3); return 0; } 私自身、sprintfの使い方やポインタの使い方に自信が無いのでぜひ教えてください。
回答: たとえば char *concat(const char *str1, const char *str2) { char *buf = null; int size = snprintf(null, 0, "%s%s", str1, str2); if (size >= 0 && (buf = malloc(size+1))) { sprintf(buf, "%s%s", str1, str2); } return buf; } なんてこともできるけど.... やりすぎ?