Я пытаюсь передать две строки функции, которая копирует вторую строку в первую строку. Получить сообщения об ошибкахПередача строки через указатель - несовместимый аргумент
"passing arguement 1/2 of 'CopyStrings'from incompatible pointer type - line 25.
note: expected 'char*' but argument is of type 'char**' - line 8
Вот мой код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// a function that gets 2 strings and copies the second one into the first one
char CopyStrings(char* string1, char* string2)
{
strcpy(string1, string2);
return *string1;
}
int main()
{
char* string1 = (char*)malloc(sizeof(char)*10);
char* string2 = (char*)malloc(sizeof(char)*10);
strcpy(string1, "ugabuga");
strcpy(string2, "mukaluka");
printf("%s", CopyStrings(string1, string2));
free(string1);
free(string2);
return 0;
}
Любые предложения, что я испортил, и как я пишу указатели правильно?
EDIT - Теперь, когда я изменил
(&string1, &string2)
в
(string1, string2)
программа chrashes.
Не отвергни 'malloc' в С. Кроме того, вы, очевидно, просят адрес' полукокса * 'делая' & string1' в вызове функции, которая проходит в '' символ **. – crashmstr
Ах, правда. Можете ли вы объяснить, почему я не должен использовать malloc здесь? –
использование malloc! = Cast malloc. Кастинг malloc не нужен, и он подавляет какое-то предупреждение, но я не совсем уверен. Это обескураживает. – MightyPork