PDA

Visualizza la versione completa : [C] Spezzare una stringa


TommyGun
30-04-2007, 19:03
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

Samuele_70
30-04-2007, 19:22
Prova così :


#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;
}

TommyGun
30-04-2007, 19:57
Perfetto!
Grazie mille

TommyGun
01-05-2007, 11:49
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

Samuele_70
01-05-2007, 12:57
Prova in quest'altro modo.


#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;
}

TommyGun
01-05-2007, 16:40
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??

Samuele_70
01-05-2007, 17:14
Facciamo molto prima (entrambe :D ) se riporti un esempio pertinente di come si
presenta effettivamente la stringa (a questo punto sarebbe meglio chiamarlo buffer).

TommyGun
02-05-2007, 11:10
Originariamente inviato da Samuele_70
Facciamo molto prima (entrambe :D ) 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.

oregon
02-05-2007, 11:14
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 ... ?

TommyGun
02-05-2007, 11:32
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

Loading