View Full Version : [c] scomporre una stringa
*MATRIX*
30-08-2008, 15:36
ciao raga
avrei una domanda da farvi
ho una stringa di questo tipo
parola1#parola2
cioč una stringa formatada due parole divise da un cancelletto
devo scomporre le due parole e visualizzarle una sotto l'altra a video eliminando il cancelletto
ovvero
esempio
cane#gatto
output
cane
gatto
che voi sappiate esiste una funzione che elimina una determinata lettera da una stringa ?
sottovento
30-08-2008, 15:41
in C no, ma puoi risolvere piuttosto semplicemente utilizzando la strchr() in modo da trovare il carattere in questione.
Per esempio, supponendo che p = "Cane#Gatto";
char *q = strchr (p, '#');
if (q)
{
*q++ = '\0';
printf ("Separatore trovato. Prima parola: %s Seconda parola: %s\n", p, q);
}
else
{
printf ("Separatore non trovato\n");
}
DanieleC88
30-08-2008, 16:55
Dannati bot... vabbe'. Prova a dare uno sguardo anche a strtok().
*MATRIX*
31-08-2008, 10:32
#include <stdio.h>
#include <string.h>
int main()
{
char s[] = "gatto#cane";
char* p;
printf("Stringa completa: \n %s\nStringa spezzata:\n",s);
p = strtok(s, "#");
while (p != NULL)
{
printf("%s\n", p);
p = strtok(NULL, "#");
}
return 0;
}
ecco ora dovrei passare i due dati in delle stringhe cme poso fare?
cioč usare due variabili stringa 1 e stringa2 alle quali verranno assegnati rispettivamente cane e gatto
come posso fare?
*MATRIX*
31-08-2008, 10:51
/* Esempio con un carattere separatore */
#include <stdio.h>
#include <string.h>
int main()
{
char *info,*file;
char s[] = "cane#gatto";
char* p;
printf("Stringa completa: \n %s\nStringa spezzata:\n",s);
p = strtok(s, "#");
while (p != NULL)
{
sprintf(info ,"%s", p);
p = strtok(NULL, "#");
sprintf(file ,"%s", p);
p = strtok(NULL, "#");
}
printf("info =%s\n",info);
printf("FILE = %s\n",file);
return 0;
}
va in segmentation fault
dove sbaglio?
Isildur84
31-08-2008, 11:12
Anticipo che non conosco l'utilizzo di sprinf ma il tuo programma ha almeno due errori: hai aggiunto un ciclo e poi non lo usi, non ha senso usare nel ciclo per due volte p = strtok; secondo, tu memorizzi, penso, l'indirizzo della variabile p in info e in file, non il contenuto. Se vuoi memorizzare il contenuto fai info = strdup(p).
DanieleC88
31-08-2008, 12:14
Il problema č che info e file non sono mai inizializzate, usa strdup().
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.