Я должен выполнять свою функцию всегда. Я не могу использовать стандартную библиотеку.Значение ошибки типа в функции C++ всегда NULL
My_cpy, my_len и my_strdup здесь. Пожалуйста, проверьте его для меня. Я думаю, что это легко, но у меня есть проблема с этой функцией. Я показал ошибку в конце страницы. Я думаю, это понятно. Кроме того, это C++
Большое спасибо.
коды:
void my_cpy(char* dest, const char* src) {
int i = 0;
while (src[i] != '\0') {
dest[i] = src[i];
i++;
}
dest[i] = '\0';
}
int my_len(const char* p) {
int c = 0;
while (*p != '\0')
{
c++;
*p++;
}
return c;
}
char *my_strdup(const char *s) {
char* d = malloc(my_len(s) + 1); // Space for length + null
if (d == NULL) return NULL; //No memory
my_cpy(d, s); // Copy the characters
return d; // Return the new string
}
У меня есть ошибки на этой функции. Как я могу решить эту проблему?
Error (активный) значение типа "пустота *" не может быть использована для инициализации сущности типа "символа *"
`Error C2440 'initializing': cannot convert from 'void *' to 'char *'`
Я написал:
char* d = (char*) malloc(my_len(s) + 1)
но сейчас проблема сверху p. Всегда NULL.
Это C или C++? –
Это C++. Может быть, позже я буду использовать в C –
@UgurBaki Это может быть C++ с точки зрения синтаксиса, но это, конечно, не C++ с точки зрения стиля. Почему вы пытаетесь воспроизвести такую функцию, как 'strdup'? Что случилось с 'std :: string', или если вы хотите что-то узнать, создав свой собственный класс строк? – PaulMcKenzie