PDA

Visualizza la versione completa : [C] Segmentation fault


Ruben Elmo
16-11-2006, 14:46
Salve ragazzi,
sapete perchŔ questo programma funziona sotto win e sotto linux mi restituisce "Segmentation fault"? Eppure il sistema Ŕ funzionante al 100%!!




/ Inclusione delle librerie di sistema utili al programma
#include <stdio.h>

int main(){
// Dichiarazione dei vettori che conterranno le componenti
int vettore_1[2];
int vettore_2[2];
int vettore_3[2];

// Inserimento dati nei vettori 1 e 2
printf("* INSERIMENTO COMPONENTI NEL VETTORE 1 *\n\n");

printf("Inserisci la componente X del vettore 1: ");
scanf("%i \n", vettore_1[0]);
printf("Inserisci la componente Y del vettore 1: ");
scanf("%i \n\n", vettore_1[1]);

printf("* INSERIMENTO COMPONENTI NEL VETTORE 2 *\n\n");

printf("Inserisci la componente X del vettore 2: ");
scanf("%i \n", vettore_2[0]);
printf("Inserisci la componente Y del vettore 2: ");
scanf("%i \n", vettore_2[1]);

// Somma vettoriare
vettore_3[0] = vettore_1[0] + vettore_2[0];
vettore_3[1] = vettore_1[1] + vettore_2[1];

// Stampa a video il vettore 3
printf("%ii + %ij\n", vettore_1[0], vettore_1[1]);
printf("%ii + %ij\n", vettore_2[0], vettore_2[1]);
printf("RISULTATO:\n");
printf("%ii + %ij\n", vettore_3[0], vettore_3[1]);

return 0;

}



Grazie

oregon
16-11-2006, 15:03
Veramente e' sbagliato anche per Windows ... (Visual Studio, infatti, mi fornisce gli appositi warning ...). Devi cambiare la parte dell'input, ricordando che la scanf accetta il puntatore alla variabile da usare. E per evitare problemi con l'input bufferizzato, modifica in questo modo il codice



// Inserimento dati nei vettori 1 e 2
printf("* INSERIMENTO COMPONENTI NEL VETTORE 1 *\n\n");

printf("Inserisci la componente X del vettore 1: ");
scanf("%i", &vettore_1[0]);
printf("\nInserisci la componente Y del vettore 1: ");
scanf("%i", &vettore_1[1]);

printf("\n\n* INSERIMENTO COMPONENTI NEL VETTORE 2 *\n\n");

printf("Inserisci la componente X del vettore 2: ");
scanf("%i", &vettore_2[0]);
printf("\nInserisci la componente Y del vettore 2: ");
scanf("%i", &vettore_2[1]);

Ruben Elmo
16-11-2006, 15:14
GiÓ Ŕ vero... -_-

Scusatemi tanto per le banalitÓ... ma sto studiando il C da pochissimo.

Grazie

XWolverineX
16-11-2006, 15:44
Scusate se mi intrometto
ma cosa Ŕ un segmentation fault?

zero85
16-11-2006, 15:57
http://it.wikipedia.org/wiki/Segmentation_fault

Loading