Si quieres meterle signos de operación de dividir y multiplicar te complicas más la vida pues tienes que mirar la prioridad yo lo haría así si solo fuese sumar y restar :
-Pedir la cadena.
-Buscar el primer operando en la cadena.
LOOP(mientras cadena no sea igual que '\0')
{
-Cortar la cadena(con la función de abajo)desde el operando anterior
(si es la primera vez será[0] )hasta ese operando y convertirla a int
con la función atoi()(ya que sólo te quedarán los números).
-Si ese operando es - pasar ese valor en negativo.
-Sumar ese valor convertido, a una variable resultado.
-Buscar el siguiente operando en la cadena.
}
Imprimir la variable resultado.
char *substring(size_t start, size_t stop, const char *src, char *dst, size_t size)
{
int count = stop - start;
if ( count >= --size )
{
count = size;
}
sprintf(dst, "%.*s", count, src + start);
return dst;
}
Recuerdo esto solo es para sumar o restar , si quieres hacer multiplicaciones y divisiones tienes que complicarlo mas.Yo optaría por ir haciéndolo poco a poco y después ya le añades más operaciones , prioridad con paréntesis etc..
Puede haber algun fallo , si és así hazlo saber.
Un saludo