Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Linguaggio_c

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    191

    Linguaggio_c

    Ciao, devo cercare di risolvere un problema,
    é molto importante, è una esercitazione.

    Leggo dei dati in un file di testo e a seconda di alcune
    situazioni le scrivo in un altro file di testo.

    in un file a ho:
    ciao

    ciaociao

    io devo trascrivere solo la
    riga due perchè ha 8 lettere.

    Ho fatto così:
    in1=fopen("c:/prova.txt","rb" );
    out1=fopen("c:/paperino.txt","wb");
    while(!feof(in1))
    {

    v=fgetc(in1);
    tabella[cont1][cont2]=v;
    .....
    ......


    devo riuscire a sapere quando si passa da una riga ad un'altra
    in modo che nell'altro file mando solo le righe con otto lettere

    Lo so che mi sono spiegato male, ma se poteste aiutarmi!!!!
    grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    191
    Non funziona!!!!
    Ho il file prova:

    ciao
    ciaociao
    ciao

    devo copiare solo ciaociao nel file paperino e ho pensato
    di fare così:
    mi leggo un carattere del file prova e lo memorizzo in un array
    di 9 per 3,
    pensando che la prima volta dal file mi viene passata la c in binario,
    la seconda la i ,la terza la a, la quarta la o e la quinta
    il carattere \n, e ho fatto
    così:
    #include <stdio.h>


    main()
    {




    FILE *in1,*out1;
    out1=stdout;
    in1=fopen("c:/prova.txt","rb" );
    out1=fopen("c:/paperino.txt","wb");
    int tabella[9][3];
    int i=0,j=0,v,punto=1;


    while(!feof(in1))
    {
    v=fgetc(in1);
    if((v=='\n')&& (punto !=9))
    {
    tabella[8][i]=0;
    punto=1;
    i++;
    j=0;
    }
    else if((v=='\n') && (punto==9))
    {
    i++;
    j=0;
    punto=1;
    tabella[8][i]=1;
    }
    else
    {
    tabella[j][i]=v;
    j++ ;
    punto++;
    }//chiude l'if

    }//chiude il while


    for(i=0;i<3;i++)
    for(j=0;j<8;j++)
    {
    if(tabella[8][i]==0 )
    {
    break ;
    }
    else
    {
    fputc(tabella[j][i],out1);
    } // chiude l'else
    }
    fclose(in1);
    fclose(out1) ;

    } //chiude il main


    non ci sono errori ma in paperino non viene scritto niente!
    Ciao e grazie per la pazienza.


    :bubu:

  3. #3
    Giochiamo a fare gli algoritmi

    Allora, supponendo che un corpo immerso nel vino riceve una spinta verso l'ipotenusa pari alla somma dei due pesi specifici..no spetta..quello era pitagora bho..si insomma vabbè risolviamo questo problemino..^_^

    Tu hai un file di testo:

    codice:
    ciao
    ciao
    miao
    ciaomiao
    miao
    Vuoi scrivere in un altro file solo quelli da 8 caratteri? well..

    Utilizzi fgets() cosi hai una bella stringa..
    well !!!

    la stringa in questione la chiami "str", bene..
    str ha "ciao" o "ciao\n" bho nn ricordo, non so il C, nn so nemmeno il B!
    Presupponendo che abbia "ciao" anzi si ha "ciao", controlli di quanti byte è..sizeof(), bene..se è = 8 la scrivi sennò no..quindi ripeti la stessa operazione (che naturalmente andrà a leggere la seconda riga grazie alla funzione segreta fgets() ) sempre utilizzando la stessa variabile "str" cosi nn sprechi memory..e si insomma utilizzando un while una variabile di 9 byte risolvi il tuo problema..is correct?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    191
    Mi sei stato di aiuto, ti ringrazio.
    Un'ultima cosa:
    prova.txt:
    -----------------------------
    dodicididici
    cicicicicici
    ciao
    ciao
    dodicidicici
    ---------------------------------------
    ho scritto:
    #include <stdio.h>
    #include <string.h>
    #include<stdlib.h>

    main()
    {




    FILE *in1,*out1;
    out1=stdout;
    in1=fopen("c:/prova.txt","r" );
    out1=fopen("c:/paperino.txt","w");
    char v[12] ;
    int a=1;

    while(a<10)
    {

    fgets(v,13,in1);
    if(strlen(v)==12)
    {
    fprintf( out1,"%s",v) ;
    fprintf( out1,"%s","\n") ;

    }
    a++;
    }
    fclose(in1);
    fclose(out1) ;

    } //chiude il main

    ----------------------file paperino---------------------------------------------
    dodicididici
    cicicicicici
    dodicidicici
    dodicidicici
    dodicidicici
    ----------------------mi s crive l'ultima riga altre due volte!!!!

    HO provato con while(!feof(in1)) al posto di while(a<10)e mi scrive l'ultima riga adesso non due volte in più ma una sola.
    Come mai?

    Ciao.

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.