Присвоить массиву символов строку в тернарном операторе

Только начал учить С. Мне нужно проверить условие и записать в память строку "YES" либо "NO" в зависимости от истинности условия. Так же мне нельзя использовать условные конструкции. Пытаюсь вот так:

char s[4];
s = (a + b + c == d + e + f) ? "YES" : "NO";

Но выдает ошибку к этой строке: "Ошибка (активно) E0137 выражение должно быть допустимым для изменения левосторонним значением".


Ответы (1 шт):

Автор решения: Антон

Приведу свои пять копеек, а именно "составные литералы" появившиеся в С99

#include <stdio.h>
#include <string.h>

int main(void) {
    const char *s;
    int a = 1, b = 1, c = 1;
    int d = 3, e = 0, f = 0;

    s = (const char *[]){"NO", "YES"}[a+b+c == d+e+f];
    printf("%s\n", s);

    char s1[4];
    e = 1;
    strcpy(s1, (const char *[]){"No", "Yes"}[a+b+c == d+e+f]);
    printf("%s\n", s1);

    printf("%s\n", (const char *[]){"Nooo", "Yeeah"}[a+b+c == d+e+f]);
    return 0;
}
→ Ссылка