Problema C

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
kelev
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1766
Iscrizione: giovedì 4 settembre 2008, 0:27

Problema C

Messaggio da kelev »

Stavo cercando un po di roba sull'hd esterno quando mi vedo comparire un vecchio src in C fatto da me un po di tempo fa. Ecco il src:

Codice: Seleziona tutto

#include<stdio.h>
main() {
	float num1, num2, ris;
	char op;
	printf(".: Calcolatrice :.\n\n");
	printf("\nInserire il primo numero:  ");
	scanf("%f", &num1);
	printf("Inserire l'operatore dell'operazione (+,-,*,/):  ");
	scanf("%s", &op);
	printf("Inserire il secondo numero:  ");
	scanf("%f", &num2);
	switch(op) {
		case '+':
			ris = num1 + num2;
		        printf("\nIl risultato e' %5.2f", ris);
			break;
		case '-':
			ris = num1 - num2;
			printf("\nIl risultato e' %f", ris);
			break;
		case '*':
			ris = num1 * num2;
                        printf("\nIl risultato e' %f", ris);
			break;
                case '/':
			ris = num1 / num2;
                        printf("\nIl risultato e' %f", ris);
                        break;
	}
	return 0;
}
Mi da il Segmentation fault sulla sottrazione e sulla moltiplicazione..perchè?
"E alla fine sei da solo, dove vai, con chi brindi?"
Avatar utente
mous16
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3940
Iscrizione: mercoledì 25 ottobre 2006, 15:51
Sesso: Maschile

Re: Problema C

Messaggio da mous16 »

al momento non mi viene in mente nulla legato alla moltiplicazione o alla sottrazione, però starei attento all'acquisizione del carattere, perchè dichiari un carattere, acquisisci una stringa a partire da quel carattere con una funzione che prende tutto fino al primo spazio o a capo e aggiunge un terminatore, che va a sovrascrivere qualche altro dato importante (forse) in modo incontrollato. Può essere fatale, io farei così:

Codice: Seleziona tutto

#include<stdio.h>
main() {
	float num1, num2, ris;
	char op[2];
	printf(".: Calcolatrice :.\n\n");
	printf("\nInserire il primo numero:  ");
	scanf(" %f", &num1);
	printf("Inserire l'operatore dell'operazione (+,-,*,/):  ");
	scanf(" %s", op);
	printf("Inserire il secondo numero:  ");
	scanf(" %f", &num2);
	switch(op[0]) {
		case '+':
			ris = num1 + num2;
		        printf("\nIl risultato e' %5.2f", ris);
			break;
		case '-':
			ris = num1 - num2;
			printf("\nIl risultato e' %f", ris);
			break;
		case '*':
			ris = num1 * num2;
                        printf("\nIl risultato e' %f", ris);
			break;
                case '/':
			ris = num1 / num2;
                        printf("\nIl risultato e' %f", ris);
                        break;
	}
	printf("\n");
	return 0;
}
EDIT: così non mi da nessun problema tra l'altro...
Pagine personali: Forum Ubuntu-it - Wiki Ubuntu-it - Launchpad
Solo/mous16
Avatar utente
kelev
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1766
Iscrizione: giovedì 4 settembre 2008, 0:27

Re: Problema C

Messaggio da kelev »

Avevo pensato pure io a questa soluzione..grazie mille
"E alla fine sei da solo, dove vai, con chi brindi?"
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti