#include <stdio.h>
char strA[80] = "A string to be used for demonstration purposes";
char strB[80];
char *my_strcpy(char *destination, char *source)
{
char *p = destination;
while (*source != '\0')
{
*p++ = *source++;
}
*p = '\0';
return destination;
}
int main(void)
{
my_strcpy(strB, strA);
puts(strB);
}
ここで私はその部分を取り出します。 // * p = '\ 0';
正確に同じ答えが表示されるので、なぜこれが必要ですか?私の理解では、\ 0は文字列の後のメモリの一部ではありませんが、配列strAはすでにその部分が含まれているので、本当に必要ですか? "C++ポインタへのポインタ
最後にヌルターミネータを設定する必要があります。そうしないと、バッファがオーバーフローします。 '* p = '\ 0"を設定せずに文字列をコピーしてみてください。 –
あなたが 'puts'を書いていたとしましょう。あなたはヌルターミネーターなしでどうやってやりますか? (C言語では使われていない別の規約ではありません) – chris
strAに '\ 0'が含まれていても、その文字がループしている間にコピーされません(while(* source!= '\ 0' ))。 – sajas