-1

引数から受け取った文字列を使用して、文字がシャッフルされた別の文字列を返します。

int size = strlen(argv[4]);
char* res = malloc(size+1);

res には argv[4] の文字が入りますが、コンソールで「test」と入力すると、「Test?」が返されます。(文字をシャッフルするのではなく、文字列を1文字ずつコピーするだけの場合)。

何故ですか ?

代わりに size+100 を指定すると機能しますが、理由がわかりません。

4

1 に答える 1

-2

これは、char のサイズを考慮していないためです。これでうまくいくはずです:

char* res = (char*)malloc((size+1)*sizeof(char))
于 2013-09-30T21:10:08.770 に答える