C: ¿Cómo puedo hacer que la entrada scanf () tenga uno de dos formatos?

ecesito hacer este programa, que toma dos triángulos y los compara.

Básicamente todo funciona bien, excepto la parte, donde el usuario ingresa los datos iniciales. Mi principal problema es que una de las condiciones es que el usuario puede ingresar longitudes de tres lados de los triángulos o coordenadas X, Y de tres vértices.

Necesito que funcione como cualquiera de estos:
Esta entrada significa que el usuario usó longitudes de lados:

{ 5 , 5 , 5 }

Esta entrada significa que el usuario usó coordenadas X, Y de vértices:

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

Aquí está mi código de cómo traté de resolverlo, pero por alguna razón si el usuario ingresa usando el vértice la primera condición, que verifica si no son longitudes laterales, lo arruina todo.

#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;
}

Si cambio estas dos condiciones de las que cambia y funciona solo si las entradas del usuario usan el vértice ...

Es posible que de alguna manera simplemente funcione así?

Respuestas a la pregunta(2)

Su respuesta a la pregunta