27/08/09 10:49
Ciao ho un problema con le stringhe: devo ricavare username e password da un file di configurazione del tipo:
<config>
<rule1>400</rule1>
<username>nome</username>
<something>boh</something>
<password>secret</password>
</config>
Forse ho trovato il modo di farlo, ma il programma mi va in SegFault e non riesco a capire perchè (gcc compila senza warnings).
Non so cosa sbaglio nel codice, qualche illuminazione?
-- PS ---
Per me va anche meglio se mi dite come fare la stessa cosa in bash!
Voglio dire, lo split in bash riesco a farlo solo usando come delimitatore un carattere, mentre a me servirebbe inserire una stringa:
Cioè
Mi da errore perchè <username> è una stringa e bisogna usare un carattere per il delimitatore...
<config>
<rule1>400</rule1>
<username>nome</username>
<something>boh</something>
<password>secret</password>
</config>
Forse ho trovato il modo di farlo, ma il programma mi va in SegFault e non riesco a capire perchè (gcc compila senza warnings).
#include <stdio.h> #include <string.h> int main() { char *a, *b, *c; a = strstr("aa<aa><username>admin</username>wdw","username"); a = strstr(a,">"); b = strstr(a,"<"); size_t n = strlen(a) - strlen(b); strncpy(c,a,n); printf("%s\n",c); a = strstr(a,"password"); a = strstr(a,">"); b = strstr(a,"<"); n = strlen(a) - strlen(b); strncpy(c,a,n); printf("%s\n",c); return 0; }
Non so cosa sbaglio nel codice, qualche illuminazione?
-- PS ---
Per me va anche meglio se mi dite come fare la stessa cosa in bash!
Voglio dire, lo split in bash riesco a farlo solo usando come delimitatore un carattere, mentre a me servirebbe inserire una stringa:
Cioè
tmp=`echo $config | cut -d'<username>' -f2`
Mi da errore perchè <username> è una stringa e bisogna usare un carattere per il delimitatore...