10/08/12 11:10
Dice
Ho risolto quel problema alla fine, però adesso ne ho un altro
ahahahahahah
allora: tu mi avevi detto che facendo così:
riuscivo a copiare l'ultimo carattere, e la cosa funziona alla grande,e ti ringrazio anche;
il mio problema è che il numero di caratteri che devo copiare non è fisso, ma variabile; spiego meglio: io devo sostitui il carattere 'z' OVUNQUE ESSO SIA. Allora avevo pensato di modificare la tua istruzione così:
in modo che mi copiava gli ultimi tot caratteri che compaiono dopo la 'z'.
Però non mi funziona, e me ne sono accorto perchè per vedere se funzionava mi andavo a stampare il vettore temporaneo in cui li mettevo, ma me lo da vuoto.
Come potrei risolvere il problemino ?
ahahahahahah
allora: tu mi avevi detto che facendo così:
strcpy(vettore_temporaneo_due,strchr(fnp,'Ho risolto quel problema alla fine, però adesso ne ho un altro
ahahahahahah
allora: tu mi avevi detto che facendo così:strcpy(vettore_temporaneo_due,strchr(fnp,'{parsed_message}')-1);
riuscivo a copiare l'ultimo carattere, e la cosa funziona alla grande,e ti ringrazio anche;
il mio problema è che il numero di caratteri che devo copiare non è fisso, ma variabile; spiego meglio: io devo sostitui il carattere 'z' OVUNQUE ESSO SIA. Allora avevo pensato di modificare la tua istruzione così:strcpy(vettore_temporaneo_due,strchr(fnp,'{parsed_message}')-(strlen(fnp)-i));
in modo che mi copiava gli ultimi tot caratteri che compaiono dopo la 'z'.
Però non mi funziona, e me ne sono accorto perchè per vedere se funzionava mi andavo a stampare il vettore temporaneo in cui li mettevo, ma me lo da vuoto.
Come potrei risolvere il problemino ?')-1);
riuscivo a copiare l'ultimo carattere, e la cosa funziona alla grande,e ti ringrazio anche;
il mio problema è che il numero di caratteri che devo copiare non è fisso, ma variabile; spiego meglio: io devo sostitui il carattere 'z' OVUNQUE ESSO SIA. Allora avevo pensato di modificare la tua istruzione così:
strcpy(vettore_temporaneo_due,strchr(fnp,'Ho risolto quel problema alla fine, però adesso ne ho un altro
ahahahahahah
allora: tu mi avevi detto che facendo così:strcpy(vettore_temporaneo_due,strchr(fnp,'{parsed_message}')-1);
riuscivo a copiare l'ultimo carattere, e la cosa funziona alla grande,e ti ringrazio anche;
il mio problema è che il numero di caratteri che devo copiare non è fisso, ma variabile; spiego meglio: io devo sostitui il carattere 'z' OVUNQUE ESSO SIA. Allora avevo pensato di modificare la tua istruzione così:strcpy(vettore_temporaneo_due,strchr(fnp,'{parsed_message}')-(strlen(fnp)-i));
in modo che mi copiava gli ultimi tot caratteri che compaiono dopo la 'z'.
Però non mi funziona, e me ne sono accorto perchè per vedere se funzionava mi andavo a stampare il vettore temporaneo in cui li mettevo, ma me lo da vuoto.
Come potrei risolvere il problemino ?')-(strlen(fnp)-i));
in modo che mi copiava gli ultimi tot caratteri che compaiono dopo la 'z'.
Però non mi funziona, e me ne sono accorto perchè per vedere se funzionava mi andavo a stampare il vettore temporaneo in cui li mettevo, ma me lo da vuoto.
Come potrei risolvere il problemino ?
aaa
10/08/12 19:33
dmr
Ciao ho scritto la funzione in molta fretta quindi non credo assolutamente che sia efficiente, comunque funziona.
Funziona per questo tipo di stringa: exoyezP(z,y,x)
Come ti ho gia scritto l'ho fatta con molta fretta ma una volta che hai capito il meccanismo la puoi modificare per farla molto piu efficiente.
Funziona per questo tipo di stringa: exoyezP(z,y,x)
char *funzione(char *str) { char *tmp=malloc(20);// primo array dove copio tutti i caratteri dopo z char *tmp2=malloc(20);// array con la stringa modificata char *ptr=tmp2;// puntatore a tmp2 perchè il puntatore tmp2 viene modificato int flag=0;// flag in modo da fermarsi alla seconda z strcpy(tmp,"f(y)");// copio su tmp f(y) strcat(tmp,strrchr(str,'z')+1);// copio su tmp tutti i caratteri dopo z for(;*str!='Ciao ho scritto la funzione in molta fretta quindi non credo assolutamente che sia efficiente, comunque funziona.
Funziona per questo tipo di stringa: exoyezP(z,y,x)char *funzione(char *str) { char *tmp=malloc(20);// primo array dove copio tutti i caratteri dopo z char *tmp2=malloc(20);// array con la stringa modificata char *ptr=tmp2;// puntatore a tmp2 perchè il puntatore tmp2 viene modificato int flag=0;// flag in modo da fermarsi alla seconda z strcpy(tmp,"f(y)");// copio su tmp f(y) strcat(tmp,strrchr(str,'z')+1);// copio su tmp tutti i caratteri dopo z for(;*str!='{parsed_message}';str++) { if(*str=='z') { flag++; } if(flag==2)break; *tmp2++=*str;// copio tutte le cose prima di z } strcat(tmp2,tmp);// concatenamento finale free(tmp); return ptr; }
Come ti ho gia scritto l'ho fatta con molta fretta ma una volta che hai capito il meccanismo la puoi modificare per farla molto piu efficiente.';str++) { if(*str=='z') { flag++; } if(flag==2)break; *tmp2++=*str;// copio tutte le cose prima di z } strcat(tmp2,tmp);// concatenamento finale free(tmp); return ptr; }
Come ti ho gia scritto l'ho fatta con molta fretta ma una volta che hai capito il meccanismo la puoi modificare per farla molto piu efficiente.
Ultima modifica effettuata da dmr 10/08/12 19:55
aaa
11/08/12 10:51
Dice
Per caso è possibile riuscire a farlo senza usare l'istruzione break ?
Perchè quello che sto cercando di fare è un progetto duniversità, e il prof non vuole che usiamo l'istruzione break (la possiamo usare solo nello switch).
Perchè quello che sto cercando di fare è un progetto duniversità, e il prof non vuole che usiamo l'istruzione break (la possiamo usare solo nello switch).
aaa
11/08/12 20:52
Dice
non mi funziona questa riga di codice:
La mia domanda è: la funzione strncpy può accettare come terzo parametro una variabile o solo un numero costante di caratteri ?
Perchè quando vado a compilare mi questo bellissimissimo errore:
*** buffer overflow detected ***: ./prog_aut terminated
DOUCH !!!!!
caratteri_finali = (int)strchr(fnp,'non mi funziona questa riga di codice:
caratteri_finali = (int)strchr(fnp,'{parsed_message}') - (int)strchr(fnp,da_sostituire); strncpy(vettore_temporaneo_due, fnp, caratteri_finali); /*i è la posizione del carattere che devo sostituire, perchè l'ho messa in un ciclo for*/
La mia domanda è: la funzione strncpy può accettare come terzo parametro una variabile o solo un numero costante di caratteri ?
Perchè quando vado a compilare mi questo bellissimissimo errore:
*** buffer overflow detected ***: ./prog_aut terminated
DOUCH !!!!! ') - (int)strchr(fnp,da_sostituire); strncpy(vettore_temporaneo_due, fnp, caratteri_finali); /*i è la posizione del carattere che devo sostituire, perchè l'ho messa in un ciclo for*/
La mia domanda è: la funzione strncpy può accettare come terzo parametro una variabile o solo un numero costante di caratteri ?
Perchè quando vado a compilare mi questo bellissimissimo errore:
*** buffer overflow detected ***: ./prog_aut terminated
DOUCH !!!!!
aaa
11/08/12 21:18
Dice
mi correggo,la funzione che mi da problemi è questa
E volevo chiedere una cosa: allora, se mette 5, mi stampa prende gli ultimi 5 elementi,e va bene; il problema è che io vorrei metterci una variabile invece del 5; è possibile ?
strcpy(vettore_temporaneo_due, strchr(fnp,'mi correggo,la funzione che mi da problemi è questa
strcpy(vettore_temporaneo_due, strchr(fnp,'{parsed_message}')-5);
E volevo chiedere una cosa: allora, se mette 5, mi stampa prende gli ultimi 5 elementi,e va bene; il problema è che io vorrei metterci una variabile invece del 5; è possibile ?')-5);
E volevo chiedere una cosa: allora, se mette 5, mi stampa prende gli ultimi 5 elementi,e va bene; il problema è che io vorrei metterci una variabile invece del 5; è possibile ?
aaa
11/08/12 21:36
Dice
ecco un ulteriore aggiornamento: mi funziona solo se copio l'ultimo carattere, cioè se metto 1
mentre se metto un altro numero, o variabile mi da sempre l'errore di overflow
mentre se metto un altro numero, o variabile mi da sempre l'errore di overflow
aaa
12/08/12 6:03
dmr
In questo modo se fai:
la stringa contenuta in fnp deve essere lunga almeno 5 caratteri.
strcpy(vettore_temporaneo_due, strchr(fnp,'In questo modo se fai:strcpy(vettore_temporaneo_due, strchr(fnp,'{parsed_message}')-5);
la stringa contenuta in fnp deve essere lunga almeno 5 caratteri.')-5);
la stringa contenuta in fnp deve essere lunga almeno 5 caratteri.
Ultima modifica effettuata da dmr 12/08/12 6:04
aaa