0
親ストリングに十分なメモリを割り当て、すべてのヌルをチェックし、最後に親ストリングを '\ 0'で終了しました。2つの文字列を連結する際にセグメンテーションフォルトが発生する
セグメンテーションフォールトは、この行にあります:
私は間違っているつもりです *arg_parent = *arg_child;
?
#include <stdio.h>
#include <stdlib.h> // malloc
int my_strcat (char* arg_parent, char* arg_child)
{
if (arg_parent != NULL)
{
// Get to the end of the parent string.
while (*arg_parent != '\0')
arg_parent++;
// Concatinate child string to the end of the parent string, byte by byte
// till the child string ends.
while (*arg_child != '\0')
{
*arg_parent = *arg_child;
arg_parent++;
arg_child++;
}
// Append '\0' at the end of the parent string which now has the child string
// joined to it.
*arg_parent = '\0';
return 0;
}
else
return -1;
}
int main()
{
printf ("\nsdfsdf\n");
char* first_name = malloc (sizeof (char*) * 20);
first_name = "ani\0";
char last_name[4] = {'s', 'h', 'a', '\0'};
int return_value = my_strcat (first_name, last_name);
if (return_value == 0)
printf ("\nfirst_name: %s\n", first_name);
else
printf ("\nmmmmmmmmmmmm\n");
return 0;
}
'チャー* FIRST_NAME = mallocの交換、で開始する(はsizeof(チャー*)* 20);' 'のchar * FIRST_NAMEと= malloc(sizeof(char)* 20); 'または' char * first_name = malloc(20); ' –