Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C]problema lettere!

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    11

    [C]problema lettere!

    riciao a tutti oggi mi sn bloccato qui:


    codice:
    #include <stdio.h>
    
    int main (void) {
    
    FILE *f;
    
    
    f=fopen ("ciao.txt", "r");
    
    
    
    if (f == NULL)
        {
            printf("Errore di accesso al file!");
        }
    char s[100]={0};
    
    int ch;
    int i=0;
    while(ch=getc(f) !=EOF){
    
    sprintf(s, "%d", ch);
    s[i]=ch;
    i++;
    }
    
    
    printf ("ciao: %d", strlen(s));
    
    return 0;
    }

    in pratica vorrei che mi leggesse i caratteri scritti nel mio file ("ciaociaociao") e li salvasse in una stringa cosi che poi io possa contare il numero di caratteri che erano presenti nel file!

    cosa sbaglio?

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Per i caratteri %c non %d, altrimenti stampi il numero collegato al carattere dalla tabella ASCII
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    11
    codice:
    #include <stdio.h>
    
    int main (void) {
    
    FILE *f;
    
    
    f=fopen ("ciao.txt", "r");
    
    
    
    if (f == NULL)
        {
            printf("Errore di accesso al file!");
        }
    char s[100]={0};
    
    int ch;
    int i=0;
    while(getc(f) !=EOF){
    
        ch=getc(f);
    
    
    s[i]=ch;
    i++;
    }
    
    
    printf ("ciao: %d\n", strlen(s));
    int k=0;
    for (k=0; k<strlen(s);k++){
    
    printf ( "s[%d]=%d\n",i,s[i]);
    }
    return 0;
    }


    ho corretto il codice... però non capisco ma mi calcola sbagliata la lunghezza.... è come se trovasse un EOF prima... io scrivo nel file una cosa tipo(ciaociaociaoicoaicoai) e lui si frma prima.. perchè?


    inoltre come faccio poi a stampare alla fine i contenuti della stringa.. mi dice che sono vuoti..

  4. #4
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Perchè usi due volte la getc:

    codice:
    while(getc(f) !=EOF){
    
        ch=getc(f);  // legge nuovamente un altro carattere
    
    
    s[i]=ch;
    i++;
    }
    E ti dimentichi di scrivere il terminatore.
    Correggendo:

    codice:
    while(getc(f) !=EOF){
    
    
    
    s[i]=ch;
    i++;
    }
    s[i]=0;
    PS: Indenta meglio il codice.

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.