У меня есть код следующим образом:Поведение массива
typedef struct Details {
char a[32];
char b[32];
char c[32];
} Details_t;
char *xyz(Details_t *pdetails) {
if ((NULL == pdetails->a) && (NULL == pdetails->b)) {
return NULL;
}
int len = 0;
char *newString = NULL;
len = strlen(a) + strlen(b);
newString = (char *)calloc(1, len + 3);
strcpy(newString, a);
strcat(newString, ";");
strcat(newString, b);
strcat(newString, ";");
return newString;
}
Теперь я передаю адрес этой структуры от main()
.
main() {
char *ret = NULL;
Details_t var;
memset((void *)&var, '\0', sizeof(Details_t));
strcpy(var.b, "EXAMPLE");
ret = xyz(&var);
printf("OUTPUT==%s\n", ret);
}
Моей проблема: я не копируя любое значение в члене а и I Have memset()
структуру детали с NULL
так что всеми членами, которые не скопированными должна быть NULL. Но в функции xyz условие ниже получает отказ.
if ((NULL == pdetails->a) && (NULL == pdetails->b))
и выход, который я получаю ниже:
OUTPUT==;EXAMPLE;
Почему это условие получает неудачу?
вместо 'NULL == pdetails-> a' использовать' STRLEN (pdetails-> а) == 0 ' –
Я надеюсь, что 'а, б и в 'должны показать общий случай, а не то, что у вас в коде. Кроме того, 'main()' должно быть, по крайней мере, некоторой вариацией 'returnType main() {...}', если не 'main (void)' обычно 'int main (void) {...}' 'cause почему нет? – ChiefTwoPencils