Это упражнение, чтобы научить себя c в 21дней.Я хочу спросить мой неудачный код
Вопрос: Напишите функцию, которая принимает две строки. Используйте функцию malloc()
, чтобы выделить достаточно памяти, чтобы удерживать две строки после их конкатенации. Верните указатель на эту новую строку.
Итак, я сделал первый код. но не работает. Функция в коде следующая:
char *concate(char *p, char *q)
{
int i, len;
char *r;
if((r = (char *)malloc(100)) == NULL){
printf("Allocate failed\n");
exit(1);
}
r = p;
for(i = 0; r[i] != '\0'; ++i)
;
len = i;
for(i = 0; q[i] != '\0'; ++i, ++len)
r[len] = q[i];
return r;
}
Ошибка компиляции, кроме ошибки времени выполнения.
Потому что я хочу использовать переменную-указатель только для решения этой проблемы.
Но я понятия не имею, использую следующую проблему с решением проблемы.
char *concate(char *p, char *q)
{
int i, len;
char *r;
if((r = (char *)malloc(1000)) == NULL){
exit(1);
}
for (i = 0; p[i] != '\0'; ++i)
r[i] = p[i];
len = i;
for(i = 0; q[i] != '\0'; ++i, ++len)
r[len] = q[i];
r[len] = '\0';
return r;
}
Этот код может работать, и может потребоваться результат.
Мой вопрос: как я могу использовать только переменную-указатель get result?
Я хочу использовать *p, *q, *r
и арифметику указателя и некоторую переменную (i для цикла).
Я решил проблему, но чувствую себя не очень хорошо, потому что я использую массив, чтобы решить эту проблему.
Пожалуйста, помогите! Спасибо.
*** Я спросил, как использовать переменную указателя только для выражения (решения) выше.
О, извините. в main() аргументы для функции - String. – antil
Вам нужно изучить 'strlen',' strcpy', нулевое завершение строк ... изучить строки в целом. – Lundin
'malloc (strlen (p) + strlen (q) + 1)' –