aux[0] es la primera posición de una variable declarada como char *aux[2];
Fallo de segmentación indica corrupcion de memoria.
Dices que tienes declarada una variable como char *aux[2], (osea, un puntero a char).
Yo creo que puede ser una de dos cosas:
1. No le has asignado espacio de memoria a la variable mediante malloc o new, el que tu declares una variable como puntero a char no significa que el compilador automaticamente asigne espacio, al declarar la variable como char * solo estas asignando espacio para el apuntador, mas no estas asignando espacio para el lugar donde apunta el apuntador, no se si me explique. Como no asignas espacio, el apuntador apunta a cualquier parte, y entonces al querer guardar algo en la variable, corrompes la memoria
2. Si solo asignaste espacio para 2 caracteres, y la cadena que lees tiene mas de 2, entonces seguira leyendo el resto de datos, corrompiendo la memoria. Ademas recuerda que las cadenas requieren un caracter nulo al final de la cadena, si tu cadena tiene longitud de 2, necesitas en realidad espacio para 3, 2 y el caracter nulo de fin de cadena. Si tu cadena tiene longitud 3, necesitas espacio para 4, y as sucesivamente.