#include<stdio.h>
char* my_strcpy(char* source, char* destination) {
char* p = destination;
while( *source != '\0' ) {
*p++ = *source++;
}
*p = '\0';
return destination;
}
int main() {
char stringa[40] = "Time and tide wait for none";
char stringb[40];
char *ptr;
char *ptr1;
ptr = stringa;
ptr1 = stringb;
puts(stringa);
puts(ptr);
my_strcpy(ptr, ptr1);
puts(ptr);
return 0;
}
ここで変数destination
は、関数のローカル コピーとして、安全なポインタを返しています。戻ってきた直後のアドレスであれば安全だと思いますが、それ以外のプロセスがアドレスを使用した場合、アドレスは変更されます。やらずに無事帰る方法はreturn destination
?
p
が指す場所を割り当てるのではなく、 malloc を実行して返すことは可能destination
ですか?