Così funziona.
Ho anche ripulito un po' il codice, sostituendo gli if con uno switch ed eliminando l'else. Infatti se il primo if è soddisfatto il programma chiama exit e termina, e quindi l'else era inutile.
Scrivendo switch (*argv[2]) fai un controllo sul primo carattere della stringa contenuta in argv[2], o per meglio dire sulla stringa puntata da argv[2]. L'errore che facevi era quello di confrontare due stringhe tramite l'operatore ==. In C questo non è possibile in quanto ogni stringa è in realtà un puntatore a una zona di memoria, e quindi è impossibile che un'uguaglianza fra due stringhe risulti vera, a meno che non puntino alla stessa locazione di memoria.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main (int argc, char *argv[]){
int c,s,t;
if (argc!=4){
printf ("ERRORE immettere più o meno valori o 1 segno\n");
exit (1);
}
switch (*argv[2])
{
case '+':
s=atoi(argv[1]);
t=atoi(argv[3]);
c=s+t;
printf ("%d\n",c);
break;
case '-':
s=atoi(argv[1]) ;
t=atoi(argv[3]);
c=s-t;
printf ("%d\n",c);
break;
case '*':
s=atoi(argv[1]);
t=atoi(argv[3]);
c=s*t;
printf ("%d\n",c);
break;
case '/':
s=atoi(argv[1]);
t=atoi(argv[3]);
c=s/t;
printf ("%d\n",c);
break;
}
}