Mira deja de contestar porque pareces que no entiendes, el programa externo no lo puedo tocar y punto, no es parte de la solución que estoy otorgando y esta fuera de mi alcance.
Quizás antes de programar deberías practicar un poco de comprensión lectora...
Para intentar ayudar, si el formato de las opciones siempre es de la misma manera como "opcionX" u "OpcionX" o lo que sea, puedes pasarle un puntero al inicio del número en la cadena a la función
atoi() de esta manera:
#include <stdlib.h>
char cadena[]="opcion123";
Claro que si el formato entre opciones cambia entonces ya no sirve. Si no cambia, podrías hacer lo que dijo
eferion para ahorrarte un
switch-case tan grande y usar punteros a función. Por ejemplo:
// prototipos de las funciones
int funcion_1(void);
int funcion_2(void);
//...
// dentro de main
int (*f[])(void)={funcion_1, funcion_2}; // array de funciones
char cadena[]="opcion2";
int index
=atoi(cadena
+6); // index de la funcion a ejecutar segun la opcion f[index](); // se ejecuta la funcion
Y bueno, de esta manera ganarías bastante rapidez aunque se perdería algo de legilibilidad en el código.
Saludos.