Как вы можете видеть ниже, я создал небольшую программу для конкатенации 2 строк с использованием C, так как вы можете себе представить, что этот код не работает, я уже исправил его сам, используя нотацию Array вместо указателей, и он отлично работает , однако я все еще не уверен, почему мой код не является почти копией моего исправленного кода.Что не так с этим кодом?
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
void concatena(char *str1, char *str2){
char *strAux;
int mover;
mover = 0;
strAux = (char *)(malloc(strlen(str1) + strlen(str2)+2));
*(strAux) = '\0';
if(str1 == '\0')
*strAux = '\0';
else
while(str1 != '\0'){
*(strAux+mover++)=*(str1++);
}
if(str2 == '\0')
*strAux = '\0';
else
while(str2 != '\0'){
*(strAux+mover++)=*(str2++);
}
strAux='\0';
str1=strAux;
printf("%s", str1);
free(strAux);
}
I'm еще новичок C (И да, я знаю, что есть библиотеки string.h, я спрашиваю это по академическим причинам), и мне сказали, что полукокс указателей и массивы это то же самое, что-то смущает меня.
Любая помощь очень ценится.
Всегда всегда всегда компилируйтесь со всеми предупреждениями и не игнорируйте никаких предупреждений. Это само по себе должно предупредить вас о большинстве ваших ошибок. –
Массив 'depes' to указатель на первый элемент, если вы опустите индекс. Если у вас есть 'char foo [10]' then 'foo == & foo [0]' –
@Kerrek SB: Я скомпилировал свою программу, не получил никаких предупреждений, кроме тех, которые сказали мне, что моя программа не отвечает. Очевидно, потому что сам код неверен. –