Oppure

Loading
09/08/12 14:20
Dice
un aiutino ?
aaa
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ì:
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)
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).
:(
aaa
11/08/12 20:52
Dice
non mi funziona questa riga di codice:

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

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

:(
aaa
12/08/12 6:03
dmr
In questo modo se fai:
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