Funzione sscanf?

di Anonimizzato21289 il
5 risposte
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

  • 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....
  • 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'
  • Dipende molto da come lo devi fare: puoi usare funzioni di libreria come sscanf e strtok?
  • LPs ha scritto:


    Dipende molto da come lo devi fare: puoi usare funzioni di libreria come sscanf e strtok?
    sscanf sì
  • 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