PDA

Visualizza la versione completa : [C] Problema passagio array to funzione


simon_bianco
11-06-2007, 19:47
Mi sapete dire cosa non funziona in questo programmino?.... Quando l'eseguo e inserisco il secondo valore nell'array mi viene un errore di windows che mi dice "la memoria non può essere write" o qualcosa del genere.... Se avete anche qualche consiglio da darmi ben venga.... Inoltre, visto che ci sono, secondo voi è possibile preparare un esame di fondamenti di informatica sul c in due settimane, o poco più?.....

#include<stdio.h>
#include <stdlib.h>

void scrittura(int *punt);
void lettura(int *punt);

main(){
while(1){
int scelta;
int dati[4];
printf("Cosa vuoi fare?\n");
printf("1 - Immetti dati\n");
printf("2 - Leggi dati\n");
scanf("%d",&scelta);

printf("\n\n");
if (scelta==1) scrittura(dati);
if (scelta==2) lettura(dati);

}
}

void scrittura(int *punt){
int i;
for(i=0;i<4;i++){
punt=punt+i;
printf("\nImmetti il %d valore",i+1);
scanf("%d",*punt);
}
}
void lettura(int *punt){
int i;
for(i=0;i<4;i++){
punt=punt+i;
printf("%d \t",*punt);

}
}

oregon
11-06-2007, 19:57
Il codice corretto delle ultime due funzioni e'



void scrittura(int *punt)
{
int i;
for(i=0;i<4;i++)
{
printf("\nImmetti il %d valore ",i+1);
scanf("%d",(punt+i));
}
}

void lettura(int *punt)
{
int i;
for(i=0;i<4;i++)
printf("%d \t", *(punt+i));
}


... capirai da solo il perche' ...

Circa la tua domanda sulla preparazione dell'esame, dipende dagli argomenti presenti nel programma didattico ...

simon_bianco
11-06-2007, 20:09
Che cavolata, il bello è che ci sarò stato mezz'ora per cercare di capire l'errore prima della risposta... Ti ringrazio, soltanto non capisco una cosa: l'errore mio è che allo scanf non passsavo un indirizzo.... però provando a fare, ad esempio:

int valore;
scanf("%d", valore);

il risultato è che non mi scrive nulla ma non mi dà nemmeno l'errore di windows che mi dava prima....

oregon
11-06-2007, 20:13
Perche' "casualmente" il contenuto della variabile corrisponde ad un indirizzo valido ma l'errore esiste comunque perche' il dato inserito NON andra' all'interno di tale variabile.

E comunque, le variabili devono essere inizializzate. Per l'esattezza dovresti scrivere

int valore = 0;
scanf("%d", valore);

e noteresti il problema.

Loading