probabilmente si riferisce al fatto che tu
1) dichiari un char e questo finisce nello stack
2) fai una scanf e infili il risultato in oper. Il C fa pochi controlli su cosa scrivi e dove lo scrivi: se tu provi a mettere la stringa "somma" in un char con una scanf, può darsi che a tempo di esecuzione il programma scriva il char 's' nello spazio di oper, e i caratteri 'o', 'm', 'm' e 'a' nelle celle di memoria successive, "corrompendo" lo stack nei dintorni della variabile oper.
Io punterei sul char *, che ti infila queste stringhe nello heap... ma almeno conosci la differenza fra stack e heap? Se non la sai dimmi che ti faccio una piccola lezione teorica (don't worry, non è lunga da sapere ne' particolarmente difficile
)
E come ti hanno detto sopra, i confronti fra stringhe si DEVONO fare con la strcmp, contenuta in string.h
if(oper = 'd'&&'i'&&'v'&&'i'&&'s'&&'i'&&'o'&&'n'&&'e') -> if ((strcmp(oper, "divisione")) == 0)
Io scriverei una roba del genere
Codice:
#include <stdio.h>
#define MAX_OPER_LEN 16
#define MAX_QUESTION_LEN 16
#define DIVISIONE "divisione"
#define SOMMA "somma"
#define SOTTRAZIONE "sottrazione"
#define MOLTIPLICAZIONE "moltiplicazione"
void main (void) /* mi hanno sempre consigliato di usare int main(int argc, char **argv) per motivi "storici"... ma son dettagli */
{
char *oper = malloc(MAX_OPER_LEN * sizeof(char)), *domanda = malloc (MAX_QUESTION_LEN * sizeof(char));
float a,b,som,sot,molt,div;
printf(" CALCOLATRICE");
printf("\n\n\nOperatori disponibili:");
printf("\n\n- Somma");
printf("\n\n- Sottrazione");
printf("\n\n- Moltiplicazione");
printf("\n\n- Divisione");
while ((strcmp(domanda, "no")) == 0)
{
printf("\n\n\nInserire l'operatore che devo utilizzare per compiere l' operazione ---->");
scanf("%s", oper); /* oper è già un puntatore quindi non c'è bisogno di passare riferimenti */
if((strcmp(oper, SOMMA)) == 0)
{
printf(" SOMMA\n\n\n");
printf("Eseguiro la somma di due numeri inseriti da tastiera");
printf("\n\n\nInserisci il primo numero ----> ");
scanf("%f",&a);
printf("\n\n\nInserisci il secondo numero ---->");
scanf("%f",&b);
som=a+b;
printf("Il risultato della somma tra %f e %f e' %f",a,b,som);
printf("\n\nVuoi farmi fare un'altra operazione?");
scanf("%s", domanda);
}
/* e così via con le altre */
}
}