я следующий код, который используют strdup функцию, когда функция strdup не работает?
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
char source[] = "The Source String ";
int main()
{
char *dest;
if ((dest = _strdup(source)) == NULL)
{
fprintf(stderr, " Error allocation memory. ");
exit(1);
}
printf("The destination = %s\n", dest);
return 0;
}
успешно говорит строковый, но я интересно, в какой ситуации это не удается, и насколько хорошо это использование его в повседневных проблем? Я знаю, что strdup его определяется
char *strdup (const char *s)
{
char *d = malloc (strlen (s) + 1); // Space for length plus nul
if (d == NULL) return NULL; // No memory
strcpy (d,s); // Copy the characters
return d; // Return the new string
}
если наша строка не NULL, есть ли шанс не суметь strdup функции?
Будьте осторожны, вы используете '_strdup' вместо' strdup', и я не уверен, что вы знаете, почему. – Eregrith
компилятор дал мне предупреждение об этом –
@dato: Компилятор дал вам предупреждение о '_strdup' или о' strdup'? Функция 'strdup' не определяется стандартом C. Он определяется POSIX. Возможно, вам нужно что-то сделать, чтобы ваш компилятор распознал его, например '# define'ing какой-то символ. Использование '_strdup', а не' strdup', не является хорошим решением. –