Problema con programma in C

di il
3 risposte

Problema con programma in C

Vi chiedo una grossa mano. Ho scritto questo programma, una volta compilato lo avvio e mi funziona fino al momento di fare la stampa nel main (mi inizia a stampare dei simboli strani e poi windows lo chiude). Ho messo degli "stampa" di prova nella funzione e vedo così che il vettore si carica correttamente. Cosa può essere a non andare? Succede qualcosa tra il passaggio del vettore dalla funzione al main secondo me...Grazie mille!

#include<stdio.h>

typedef struct{
char destinazione[21];
char tipologia;
float costo;
int data;
}viaggio;
typedef viaggio viaggi[100];

int carica(viaggi v, int dim){
char risp='s';
while(risp=='s'){
printf("IInserire destinazione: ");
scanf("%s", v[dim].destinazione);
printf("Inserire tipologia (A: all inclusive H: Hotel V: Viaggio): ");
scanf("%1s", &v[dim].tipologia);
printf("Inserire costo: ");
scanf("%f", &v[dim].costo);
printf("Inserisci data (gg/mm/aa): ");
scanf("%d", &v[dim].data);
printf("Inserire altro viaggio?(s/n): ");
scanf("%1s", &risp);
dim++;}

return (dim);
}

void stampa(viaggi v, int dim){
int i;
for(i=0;i<dim;i++){
printf("/n %s %c %f %d", v.destinazione, v.tipologia, v.costo, v.data);}
}

int main(){
viaggi v;
int dim=0, i;
dim=carica(v, dim);
stampa(v, dim);

return 0;
}

3 Risposte

  • Re: Problema con programma in C

    
    ...
    //scanf("%s", v[dim].destinazione);
    scanf("%s", &v[dim].destinazione);
    ...
    //scanf("%1s", &risp);
    scanf (" %c",&risp);
    ...
    
    Saluti,
    Max
  • Re: Problema con programma in C

    %1s lo uso perchè %c da problemi con il \n dell'invio.
    Non è sbagliato memorizzare una stringa con &??
  • Re: Problema con programma in C

    %1s lo uso perchè %c da problemi con il \n dell'invio.
    se anteponi un spazio nel formato svuota il buffer. Già discusso più volte in questo forum.
    La tua scanf quanti chars prende??? Sicuro solo uno???
    Non è sbagliato memorizzare una stringa con &??
    La stringa è reference?


    Max
Devi accedere o registrarti per scrivere nel forum
3 risposte