Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [C] spezzare una stringa

    Salve,
    sapete come fare a dividere il contenuto di una stringa in più variabili?

    io provavo così ma sembra non funzionare:
    sscanf(buffer,"%s - %s\n",&a,&b);
    considernado che buffer è una stringa formata così: "stringa1 - stringa2"

    GRazie

  2. #2
    Prova così :
    codice:
    #include <stdio.h>
    
    int main()
    {
    	char str[80]="stringa1 - stringa2";
    	char str1[80], str2[80];
    	sscanf( str, "%s - %s", str1, str2);
    	printf("parte1 = '%s'\n", str1);
    	printf("parte2 = '%s'\n", str2);
    	return 0;
    }
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Perfetto!
    Grazie mille

  4. #4
    Scusate di nuovo, è lo stesso problema, ma un pò più allargato...

    Se invece ho una stringa formata in questo modo: "stringa1 stringa2 Moltestringhe.."
    come potrei fare a prendere il contenuto sia di stringa1, di stringa2 ed anche di MolteStringhe??
    Moltestringhe è l intero contenuto di un file testuale.

    Ho provato così :
    sscanf(buffer,"%s %d %s",file, &a, fileCont);
    ma a quanto pare in fileCont mette solo la prima parola che trova(dopo l'intero) fino allo spazio.

    Grazie

  5. #5
    Prova in quest'altro modo.
    codice:
    #include <stdio.h>
    
    int main()
    {
    	char str[]="stringa1 1234567 stringa2 stringa3 stringa4 stringa5";
    	char str1[80], str2[80];
    	int a;
    	sscanf( str, "%s %d %[ -~]s", str1, &a, str2);
    	printf("Stringa1 = '%s'\n", str1);
    	printf("intero   = '%d'\n", a);
    	printf("Stringa2 = '%s'\n", str2);
    	return 0;
    }
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  6. #6
    Scusa per il ritardo ho potuto provare solo ora.
    Dunque funziona ma solo per una riga, se il contenuto di Moltestringhe e' un testo su piu' righe,
    in quel modo prende solo la prima riga, invece dovrebbe prendere tutto quello che trova...
    Sai come fare per risolvere??

  7. #7
    Facciamo molto prima (entrambe ) se riporti un esempio pertinente di come si
    presenta effettivamente la stringa (a questo punto sarebbe meglio chiamarlo buffer).
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  8. #8
    Originariamente inviato da Samuele_70
    Facciamo molto prima (entrambe ) se riporti un esempio pertinente di come si
    presenta effettivamente la stringa (a questo punto sarebbe meglio chiamarlo buffer).
    Il buffer(come l'ho sempre chiamato negli esempi di codice postati ) si presenta come ti ho detto, cioè "stringa intero contenuto_file_testuale". Il problema è che con l'ultima soluzione mi prendeva solo la prima riga del file e non anche tutte le altre.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Forse quello che si voleva sapere e' qualche dettaglio sul contenuto della stringa.

    Quando parli di "piu' righe" significa che tra le stringhe rimanenti esistono dei caratteri CR / LF ... ?

  10. #10
    Originariamente inviato da oregon
    Forse quello che si voleva sapere e' qualche dettaglio sul contenuto della stringa.

    Quando parli di "piu' righe" significa che tra le stringhe rimanenti esistono dei caratteri CR / LF ... ?
    e come faccio a saperlo??
    posso dirti che il contenuto del file è stato messo dentro il buffer tramite una lettura
    fatta con fread(....), di più non sò...spero possa essere utile

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.