Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C] stringhe, spazio e files

    ciao a tutti,

    ho fatto un programma che salva delle stringhe di testo in un file.
    Ho però delle domande o curiosità da porvi...

    allora se devo salvare una stringa costituita da una parola solo posso anke fare così:

    ...

    printf("scrivi qualcosa: ");

    fprintf(ptr, "%s", stringa);

    ...

    però se devo salvare uan stringa costituita da varie parole e quindi da spazi l'unico modo che ho trovato è stato questo:
    ( vi posto solo le funzioni interessate al salvataggio ... ):

    #define MAX_IND 100

    static int nbPers = 0; /* TIENE SOTTO CONTROLLO IL NUMERO DI POSIZIONI */

    void controlla_stringhe(char str[],int size) { /* riceve come parametri la stringa e la dimesione */
    char car;
    int i = 0;


    while( !isalpha(car=getchar()));

    do {

    str[i++] = car;

    } while ( (i < size - 1 ) && ( (car = getchar()) != '\n'));


    str[i] = '\0';


    if (car != '\n' ) {

    while (getchar() != '\n')
    ;
    }
    }


    /* FUNZIONE CALCOLO MAX DATI */

    Boolean controllo(Struttura pers) {

    if(nbPers >= MAX_IND) {
    printf("Impossibile aggiungere dati: l'indice è pieno!");
    return FALSE;
    }

    else

    {

    salva[nbPers++] = pers;

    return TRUE;

    }
    }




    /* FUNZIONE PER INSERIRE LA STRINGA */

    Editor inserisci_dati(Boolean controllo) {

    Struttura dati; /* mi riferisco ad una struttura ... */

    printf("\n\nInserisci una stringa con spazi: ");
    controlla_stringhe(dati.stringa, MAX_SIZE);

    return dati;

    }

    /* POI LI SALVO COSI' */

    void salvaIndice() { /* qui salva i dati inseriti */
    FILE *ptr;
    int i;

    if( (ptr = fopen("db.dat", "w")) == NULL)
    fprintf(stderr, "ATTENZIONE!\n");
    else {
    for(i = 0; i < nbPers ; i++ ) {

    fprintf(ptr, "%s\t",salva[i].stringa);

    }
    fclose(ptr);
    }



    }


    ho modificato un pò le funzioni spero di non aver incasinato tutto e che riuscite a capire cosa fanno ... anke se non ho postato tutto il prog

    cmq come si vede tutto il processo di salvataggio della stringa nel file è affidato al valore di nbPers che scorrendo l'indice man mano permette di salvare i singoli caratteri ed anke gli spazi delle stringhe...
    il programma funziona perfettamente, solo che vorrei sapere se esiste un altro modo per eliminare il problema di utilizzare nbPers , magari un altro modo per sostituire :

    " for(i = 0; i < nbPers ; i++ ) "

    con un'altra relazione che permetta allo stesso modo di scorrere l'indice e le stringhe...
    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
    Non ho capito... tutto quel procedimento per salvare una stringa in un file?

    #include <stdio.h>

    int main(void) {
    FILE *f;
    char stringa[] = "prova ciao a tutti";
    f = fopen("file", "w");
    fputs(stringa, f);
    fclose(f);
    }

    O non ho capito io

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    92
    Puoi anche fare in questo modo...

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

    int main(void)
    {
    char s[] = "prova stringa";
    FILE *f;
    f = fopen("file", "w");
    fprintf(f, "%s", s);
    fclose(f);
    system("pause");
    return 0;
    }




    Rocco di LECCE...

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    92
    Scusa Rocco mi permetto di aprire una parentesi:
    Come faccio ad aprire un file ke si trova nel desktop o in una qualunque cartella?

    Tnx



  5. #5
    mm si il metodo del puts(stringa, ptr); è buono per una stringa, ma io devo salvare diversi record nel file e nel savarli devo aggiungerci delle stringhe ulteriori, ad esempio io facevo:

    fprintf(f, "Ciao %s", s);

    ed in questo modo aggiungevo Ciao + la stringa all'interno del file...


    ma con fputs non posso aggiungere niente... e se uso la fprintf i primi record mi vengono salvati ma poi mi si crasha il programma...



    peppe credo che devi mettere il percorso completo tra le virgolette... non sono sicuro che funzioni perchè non l'ho mai provato questo metodo...
    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

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    92
    Ma se metto tutto il percorso mi da errore...

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    1
    scusate a che serve questo comando ?

    salva[nbPers++] = pers;

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    63
    prova a raddoppiare i backslash del percorso, invece di mettere

    c:\pippo
    fai
    c:\\pippo
    Il sesso sicuro è importante, non fate mai l'amore su un'impalcatura.
    Against TCPA: Against Palladium

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 © 2024 vBulletin Solutions, Inc. All rights reserved.