#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void catTo(char *dest, const char *str1, const char *str2)
{
dest = (char *) malloc(1 + strlen(str1)+ strlen(str2));
strcpy(dest, str1);
strcat(dest, str2);
}
int main(int argc, char** argv) {
char *str1 = "abcd";
char *str2 = "defg";
char *dest;
catTo(dest, str1, str2);
printf("%s",dest);
return 0;
}
私はdestを出力するときに単純なstrコピー関数を取得しようとしていますが、 "(null)"を取得します。私は、特定の変数の前に入れてみようとしましたが、無効にしました。nullを返すポインタを持つC文字列関数
'無効catTo(のchar *のDESTを、': 'dest'は、あなたの関数の外に変更されることはありません –
をコンパイルするときに、いつも。すべての警告を有効にしてから、これらの警告を修正してください( 'gcc'の場合は最低でも-Wall -Wextra -pedantic' -Wconversion -std = gnu99'を使用します) – user3629249
ヒープメモリ(malloc、calloc、realloc)1)戻り値をキャストしないでください。型は既に 'void *'であるため、他のポインタに代入することができます。キャスティングはコードを混乱させ、理解し、デバッグし、維持することをより困難にします。 2)操作が成功したことを保証するために返された値を常にチェックする(!= NULL) – user3629249