#include <stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char *words[] = {"mHello", "kWorld", "kHow", "9Are", "3You?"};
char **parsed = malloc(5);
int i;
for (i = 0; i < 5; i++)
{
int n = strlen(words[i]);
parsed[i] = malloc(n);
strncpy(parsed[i], words[i] + 1, n);
printf("[%s] ", parsed[i]);
}
printf("\n----------------------\n");
for (i = 0; i < 5; i++)
printf("[%s] ", parsed[i]);
return 0;
}
parsed[i]
words[i]
最初の文字なしで含む。
出力は
[Hello] [World] [How] [Are] [You?]
----------------------
[▒▒ o] [World] [How] [Are] [You?]
最初の printf 呼び出しはparsed[0]
正しく機能するのに、2 番目の呼び出しは機能しないのはなぜですか?
また、 から 1 つの要素を削除するとwords
、このコードは正しく機能します。何が起こっている ?