Funzione sscanf?

di il
5 risposte

Funzione sscanf?

Non riesco a trovare un sito che spieghi in modo chiaro come funziona sscanf.
So che si usa per convertire stringhe in interi, ma come si usa?
al primo posto nelle parentesi metto la stringa, e format cosa significa? sscanf poi returna la stringa in intero?

5 Risposte

  • Re: Funzione sscanf?

    DamunaTaliffato ha scritto:


    So che si usa per convertire stringhe in interi, ma come si usa?
    Assolutamente no , serve per leggere da uno stream e convertire la "roba" letta in un formato specifico.

    Per esempio in questo esempio vedi leggere 2 stringhe (format specifier %s) e due numeri interi (format specifier %d).
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
       int day, year;
       char weekday[20], month[20], dtm[100];
    
       strcpy( dtm, "Saturday March 25 1989" );
       sscanf( dtm, "%s %s %d  %d", weekday, month, &day, &year );
    
       printf("%s %d, %d = %s\n", month, day, year, weekday );
        
       return(0);
    }
    
    In ogni caso IL MANUALE contiene veramente tutto quello che ti serve....
  • Re: Funzione sscanf?

    LPs ha scritto:


    DamunaTaliffato ha scritto:


    So che si usa per convertire stringhe in interi, ma come si usa?
    Assolutamente no , serve per leggere da uno stream e convertire la "roba" letta in un formato specifico.

    Per esempio in questo esempio vedi leggere 2 stringhe (format specifier %s) e due numeri interi (format specifier %d).
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
       int day, year;
       char weekday[20], month[20], dtm[100];
    
       strcpy( dtm, "Saturday March 25 1989" );
       sscanf( dtm, "%s %s %d  %d", weekday, month, &day, &year );
    
       printf("%s %d, %d = %s\n", month, day, year, weekday );
        
       return(0);
    }
    
    In ogni caso IL MANUALE contiene veramente tutto quello che ti serve....
    Quindi se volessi leggere una stringa formata da n caratteri separati da spazio, e convertire questi n caratteri in int come faccio?
    Ad esempio voglio convertire char s[3] = 'a b c'
  • Re: Funzione sscanf?

    Dipende molto da come lo devi fare: puoi usare funzioni di libreria come sscanf e strtok?
  • Re: Funzione sscanf?

    LPs ha scritto:


    Dipende molto da come lo devi fare: puoi usare funzioni di libreria come sscanf e strtok?
    sscanf sì
  • Re: Funzione sscanf?

    Se puoi usare solamente la sscanf puoi muoverti in due modi:
    1 - usi sscanf e le passi in un ciclo il puntatore al primo carattere del numero che vuoi convertire. Qundi scorri la stringa fino alla fine e ogni volta che trovi un carattere diverso a spazio dai in pasto l'indirizzo di quel carattere alla sscanf
    2 - dividi la stringa in sottostringhe e poi le passi una a una a sscanf.
Devi accedere o registrarti per scrivere nel forum
5 risposte