C: Como posso fazer com que a entrada scanf () tenha um dos dois formato

Preciso fazer esse programa, que pega dois triângulos e os compar

Basicamente, tudo funciona muito bem, exceto a parte em que o usuário insere os dados iniciais. Meu principal problema é que uma das condições é que o usuário possa inserir comprimentos de três lados dos triângulos ou coordenadas X, Y de três vértice

Eu preciso que ele funcione como um destes:
Esta entrada significa que o usuário usou comprimentos de lados:

{ 5 , 5 , 5 }

Esta entrada significa que o usuário usou as coordenadas X, Y dos vértices:

{ [ 1 ; 1 ] , [ 3 ; 1 ] , [ 2 ; 2 ] }

Aqui está o meu código, como tentei resolvê-lo, mas, por alguma razão, se as entradas do usuário usando o vértice a primeira condição, que verifica se não são comprimentos laterais, estraga tud

#include <stdio.h>

int main() {
    double a, b, c, A[2], B[2], C[2];
    char s;

    if(scanf(" { [ %lf ; %lf  ] , [ %lf ; %lf  ] , [ %lf ; %lf  ] }%c", 
            &A[0], &A[1], &B[0], &B[1], &C[0], &C[1], &s) != 7 && s != '\n') {
        s = ' ';

        if(scanf(" { %lf , %lf , %lf }%c", &a, &b, &c, &s) != 4 && s != '\n') {
            printf("error\n");
            return 1;
        }

    }

    // rest of the code...

    printf("success\n");
    return 0;
}

Se eu trocar essas duas condições do que ele alterna e funcionará apenas se as entradas do usuário usarem o vértice ...

É possível fazê-lo de alguma forma simplesmente funcionar assim?

questionAnswers(2)

yourAnswerToTheQuestion