#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;
}
Я пытаюсь получить простую функцию str-копирования для работы, однако, когда я распечатываю dest, я получаю «(null)». Я пробовал, возился с помещением &/* infront определенных переменных, но ни в коем случае не преобладал.Функция строки C с указателями, возвращающими нуль
'недействительным Катто (CHAR * Dest,': 'dest' не будет изменен за пределами функции –
при компиляции, всегда. включите все предупреждения, затем исправьте эти предупреждения (для 'gcc', при минимальном использовании:' -Wall -Wextra -pedantic' Я также использую: '-Wconversion -std = gnu99') – user3629249
при вызове любой из кучной памяти функции распределения (malloc, calloc, realloc) 1) не выдают возвращаемое значение. Тип уже «void *», поэтому его можно назначить любому другому указателю. Кастинг просто загромождает код, что затрудняет его понимание, отладка, поддержку. 2) всегда проверяйте (! = NULL) возвращаемое значение, чтобы убедиться, что операция прошла успешно. – user3629249