Apertura file,problema ciclaggio.

di il
2 risposte

Apertura file,problema ciclaggio.

Ciao a tutti,sto tentando di creare un programma che apra in scrittura un file di testo,in sostanza ci sono riuscito,tranne un piccolo cavillo,nella funzione main,quando avvio un ciclo per chiedere se dopo la prima stringa se ne vuole creare un altra e scriverla nel file,il programma salta il comando di salvataggio della stringa(gets(s)per intenderci) e avvia direttamente il ciclo che chiede se continuare a inserire,quindi ripete la stessa identica cosa se la scelta è di nuovo positiva,questo fin quando il controllo non riceve una risposta negativa se continuare o meno...qual'è il problema secondo voi? il codice di tutto il programma è questo,comprende main,sottofunzione per la lista e sottofunzione di stampa.

P.s., grazie in anticipo.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define max 20

struct node{
       char a[max];
       struct node *next;
       };
       
struct node *inserisci_stringa(struct node *nuova, char s[]);

void stampa_stringa(struct node *nuova,FILE *fp);




struct node *inserisci_stringa(struct node *nuova,char s[]){
struct node *new_node;


new_node= malloc(sizeof(struct node));
strcpy(new_node->a,s);
new_node->next=nuova;
nuova=new_node;

return nuova;

}

void stampa_stringa(struct node *nuova,FILE *fp){
       int i;
       i=1;
       for(;nuova!=NULL;nuova=nuova->next,i++){
       fprintf(fp,"[%d]%s\n",i,nuova);
       }
       }




int main(){
    
    FILE *fp;
    char s[max];
    int d;
    struct node *nuova=NULL;
    int operazione;
    
    fp=fopen("Testo.txt","w");
    if(fp!=NULL){
            
            
    for(d=1;d!=0;){
    printf("Inserisci una stringa,massimo 20 caratteri\n\n");
    gets(s);
    nuova=inserisci_stringa(nuova,s); 
    printf("Inserisci altra stringa?\n");
    scanf("%d",&d);
    
}        
     

    stampa_stringa(nuova,fp);
}

fclose(fp);
    
                   system("pause\n");
                   return 0;
                   }  

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte