Problema input formattato da file (C)

di il
3 risposte

Problema input formattato da file (C)

Salve a tutti,
devo leggere delle informazioni da un file.
Conosco il formato di ciascuna riga: <caratteri><interi><caratteri><interi>, senza spazi fra un tipo e l'altro (esempio: roma12torino13).
Il problema è che, utilizzando la fscanf, non posso utilizzare %s per l'input dei nomi (perchè uno acquisirebbe tutta la riga), nè %c perchè non so il numero esatto dei caratteri.

Come potrei fare?

3 Risposte

  • Re: Problema input formattato da file (C)

    Puoi sfruttare isdigit() e insieme a strtol()
    
    while(ch != EOF)
    {
        if(isdigit(ch))
        {
           //salva nell'array dei numeri
           //usa strtol per convertire in intero
           //processa i dati
         }
        else
        {
           //salva nell'array di caratteri
        }
        ch = getc();
    }
    
  • Re: Problema input formattato da file (C)

    Grazie, non conoscevo strtol()

    ancora un altro dubbio: da quello che ho capito, in questo modo unisce insieme tutti i caratteri e tutti i numeri; come faccio a separare la prima sequenza dalla seconda?
  • Re: Problema input formattato da file (C)

    Crei due array. In uno salvi i caratteri che non sono numerici e nell'altro salvi le cifre da 0 a 9. Dopo aver fatto questo hai i numeri e altri caratteri separati e per ottenere un intero dal secondo array basta che usi strtol().
Devi accedere o registrarti per scrivere nel forum
3 risposte