Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1

    [C] Leggere da un vettore e scrivere nel file

    ciao,
    ho scritto una funzione che riceve in input una stringa e la dovrebbe salvare all'interno di un file... solo che ho problemi nel farlo... mi da sempre errore...

    ho provato ad usare la sscanf ma ho sempre problemi...

    void funzione(char *s){

    char colore[15];

    sscanf(s, "%s", &colore[15]);

    ...

    ...

    }

    p.s. se vi va mettetemi anke il codice per salvarlo nel file... casomani faccio errori anke con quello... grazie...
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  2. #2
    io il programmino l'ho fatto così:

    codice:
    #include<stdio.h>
    
    void salva(char*);   //dichiaro la funzione
    FILE *fi;					
    char str[100];
    
    main() {
    
    fi=fopen("prova.txt","w");    //apro il file
    salva(&str[0]);    //chiamo la funzione passandogli l'indirizzo del primo carattere della stringa
    
    }
    
    
    void salva(char *s) {   //salvo l'indirizzo del primo carattere passato alla funzione in un puntatore a char
    
    	printf("\nInserisci una stringa");
    	gets(str);     //prendo in input la stringa... la uso al posto di scanf perchè la scanf non prende in input un intera stringa conteneti spazi
    	fputs(s,fi);   //e adesso la metto nel file
    
    }
    te l'ho commentato e dovresti capire.. se qualcosa non va fammi sapere... ciao ciao
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  3. #3
    ops... scusami andavo di fretta quando ho scritto il topic...

    intendevo dire che devo prendere in input una stringa già inserita in un vettore e salvarla direttamente nel file... senza richiedere niente all'utente...
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  4. #4
    Originariamente inviato da rocco.g
    intendevo dire che devo prendere in input una stringa già inserita in un vettore e salvarla direttamente nel file... senza richiedere niente all'utente...
    cioè una stringa già inizializzata??
    allora fai cosi':
    codice:
    #include<stdio.h>
    #include<stdlib.h>//funz. exit()
    #include<string.h>//funz. strlen()
    
    FILE *fil;                                       
    char stringa[] = "testo mia stringa";
    
    stringa[ strlen(stringa)+1 ] = '\0'; //pongo il terminatore di stringa...
    
    int main() {
    
    fi = fopen("prova.txt","w");
    
    if (fi == NULL){
    printf("\nErrore durante l'allocazione della memoria\n");
    exit 1; 
    }  
    
    fputs(s,fi);
    
    return 0;
    }
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  5. #5
    Originariamente inviato da I'mtheleader
    io il programmino l'ho fatto così:

    codice:
    #include<stdio.h>
    
    void salva(char*);   //dichiaro la funzione
    FILE *fi;					
    char str[100];
    
    main() {
    
    fi=fopen("prova.txt","w");    //apro il file
    salva(&str[0]);    //chiamo la funzione passandogli l'indirizzo del primo carattere della stringa
    
    }
    
    
    void salva(char *s) {   //salvo l'indirizzo del primo carattere passato alla funzione in un puntatore a char
    
    	printf("\nInserisci una stringa");
    	gets(str);     //prendo in input la stringa... la uso al posto di scanf perchè la scanf non prende in input un intera stringa conteneti spazi
    	fputs(s,fi);   //e adesso la metto nel file
    
    }
    te l'ho commentato e dovresti capire.. se qualcosa non va fammi sapere... ciao ciao
    in questo programma c'è un errore..nella funzione salva nel gets devi acquisire s e non str.
    devi modificarlo cosi':
    codice:
    
    gets(s);


    ps nel passaggio alla funzioen salva della stringa str basta fare
    codice:
    salva(s); //equivalente al fare &str[0]
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  6. #6
    mm grazie per l'aiuto...

    ho provato a compilare il tuo primo programma andrea, ma mi da degli errori che riguardano il comando:

    fi = fopen("prova.txt","w");


    cosa dovrebbe essere fi ?
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  7. #7
    Originariamente inviato da rocco.g
    mm grazie per l'aiuto...

    ho provato a compilare il tuo primo programma andrea, ma mi da degli errori che riguardano il comando:

    fi = fopen("prova.txt","w");


    cosa dovrebbe essere fi ?

    fi dovrebbe essere un puntatore a FILE... nel digitare andrea ha battuto un carattere in +.... infatti ha dichiarato"fil" e poi ha usato "fi".... quindi:

    codice:
    #include<stdio.h>
    #include<stdlib.h>//funz. exit()
    #include<string.h>//funz. strlen()
    
    FILE *fi;                                       
    char stringa[] = "testo mia stringa";
    
    stringa[ strlen(stringa)+1 ] = '\0'; //pongo il terminatore di stringa...
    
    int main() {
    
    fi = fopen("prova.txt","w");
    
    if (fi == NULL){
    printf("\nErrore durante l'allocazione della memoria\n");
    exit 1; 
    }  
    
    fputs(s,fi);
    
    return 0;
    }


  8. #8
    Originariamente inviato da }gu|do[z]{®©
    [B]fi dovrebbe essere un puntatore a FILE... nel digitare andrea ha battuto un carattere in +.... infatti ha dichiarato"fil" e poi ha usato "fi".... quindi:
    eheh sisi

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  9. #9
    acquisire str o s non cambia... se acquisisco s la stringa la vado a salvare in str e se acuisisco str tanto la locazione la raggiungo con s... poi comunque nel main non posso fare :"salva(s)" perchè s è un puntatore che viene dichiarato nella funzione salva e quindi non ancora allocato in memoria quando avviene la chiamata di funzione..(sarebbe comunque anche non visibile)....

    ciao ciao :metallica
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  10. #10
    Originariamente inviato da I'mtheleader
    acquisire str o s non cambia... se acquisisco s la stringa la vado a salvare in str e se acuisisco str tanto la locazione la raggiungo con s...
    invece cambia
    Nella funzione salva puoi benissimo acquisire str perchè è una stringa dichiarata "sopra" al main e quindi globale...ma se poi stampi invece *s(ossia il parametro formale della funzione)questo sarà nullo(NULL) perchè non vi è stato salvato nessun dato.

    Altra cosa:non conviene utilizzare funzioni per scrivere su var globali.Dichiara str nel main e passala alla funzione



    poi comunque nel main non posso fare :"salva(s)" perchè s è un puntatore che viene dichiarato nella funzione salva e quindi non ancora allocato in memoria quando avviene la chiamata di funzione..(sarebbe comunque anche non visibile)....
    sisi ti dicevo infatti di passare alla funzione salva str cosi'
    codice:
    salva(str);
    invece di fare come te :
    codice:
    salva(&str[0]);
    La cosa è IDENTICA ma non ha senso utilizzare il reference(&) qua perchè il puntatore ad una stringa,come ad un qualsiasi array,punta già all'INDIRIZZO del PRIMO elemento.



    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.