0

お届け機能&schar array(text)str_cpy

void str_cpy(char *str_in, char *str_out);

例(作品):

   void str_cpy(char *str_in, char *str_out);
int main(int argc, char *argv[])
{
   char *s = NULL;
   str_cpy(&s, "Hola Hola");
   puts(&s);
   system("PAUSE");
   return 0;
}

void str_cpy(char *str_in, char *str_out) {
   strcat(str_in, "Hello");
}

機能しない (どのように機能するか)

void str_cpy(char *str_in, char *str_out);
int main(int argc, char *argv[])
{
   char *s = NULL;
   str_cpy(&s, "Hola Hola");
   puts(&s);
   system("PAUSE");
   return 0;
}

void str_cpy(char *str_in, char *str_out) {
   strcat(str_in, str_out);
}

最後の関数をどのように書くことができますか? 関数 str_cpy をどのように正しく記述するか、関数で char 配列を送信するか?

4

2 に答える 2

0

すでに割り当てられている変数を使用する必要があります。ここでの問題は、次のような Pointer を使用する場合です。

char *pointer = NULL;

物理メモリ アドレスが正しく指定されていません。できること:

char string[32];
char *pointer;

pointer = string; // or pointer = &string[0], which is the same
str_cpy(pointer, "Something");
// Here, pointer holds a real address, so you can work with it.

2 つの変数を使用したくない場合は、メモリを割り当てることができます。

char *pointer;
pointer = (char *) malloc(strlen("Something")+1); 
// Dont forget an extra byte for binary zero who will termine the string
// from now, pointer holds the address of a memory block. It means you can:
strcpy(pointer, "Something");
于 2013-10-17T12:36:13.080 に答える