この質問にC++のタグを付けたことに加えて、Cを使用していると仮定します。C ++が必要な場合は、Luchianの回答を参照してください。
コードにはいくつかのエラーがあります-より大きなエラーは、によって指す文字列にメモリを割り当てなかったことですpName。2番目のエラーは、関数nName内の予約済みメモリ位置のアドレスではなく、変数のアドレスを取得していることですasprintf。3番目のエラーは、asprintf関数が標準のC関数ではないが、GNU拡張機能であり、コンパイラーで使用できない可能性があることです(どちらであるかはわかりませんでした):http://linux.die.net/man/3/asprintf
次のようなものを使用する必要があります。
#include <stdio.h>
const char* pName = "Foo"
printf("\nMy name is %s.\n\n\n",pName);
char nName[30];
int num_chars = sprintf(nName, "%s%s", "Somebody known as ", pName);
編集:asprintf関数について詳しく読みました。ポインタのアドレスをに渡す必要がありますが、asprintfではなく、に渡す必要があります。メモリの場所として、ポインタが指すメモリの場所は、に十分なメモリを割り当てた後に変更されます。const char *char*asprintf