|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
|
[C]problema con funzione strcpy!!!..help...
Salve ragazzi sto avendo un problem con l'uso della strcpy, ho questo programmino ke mi deve trovare l'occorrenza di una sottostringa di 3 lettere in una stringa e sostituirmi queste rtre lettere con tre XXX, lo compilo e non mi segnala errori , ma al momento di avviarlo mi da un problema...asetto consgigli grazie
#include <stdio.h> #include <string.h> #include <stdlib.h> void main () { char *Pstringa="nel mezzo del cammin di nostra vita\n" "mi ritrovai per una selva oscura\n" "la cui diritta via era smarrita\n"; char *Psottostringa="ita"; char *Nuova="XXX"; int MAX; int it=0; printf("%s",Pstringa); MAX=strlen(Pstringa); while(it<MAX) { if(Pstringa[it]==Psottostringa[0]) if(Pstringa[it+1]==Psottostringa[1]) if(Pstringa[it+2]==Psottostringa[2]) { strcpy(&Pstringa[0],Nuova); //Pstringa[it+1]=Nuova[1]; //Pstringa[it+2]=Nuova[2]; } it++; } printf("%s",Pstringa); system("pause"); }
__________________
O'Napule dint'o'core.......... -MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3 -IPhone 3GS 16 GB -Ipad wifi+3g 64gb |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Per tale motivo, andare a scrivere su una stringa literal è una cosa da non fare perché può causare un segmentation fault. Copia la stringa in un'area di memoria allocata dinamicamente o dichiara la stringa come array di char: char str[]=".....";
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
|
ho capito ma nel mio caso devo fare come ho scritto, perciò mi sn impallato....te ke mi consigli?
__________________
O'Napule dint'o'core.......... -MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3 -IPhone 3GS 16 GB -Ipad wifi+3g 64gb |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
confermo quanto ti è stato già detto
come mai devi fare tassativamente in quel modo? non puoi mettere char Pstringa[] ? |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
|
ho capito lo so benissimo ke è consigliabile fare così...ma ti ripeto io devo dikiarare in modo dinamico la stringa e non in modo statico...
__________________
O'Napule dint'o'core.......... -MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3 -IPhone 3GS 16 GB -Ipad wifi+3g 64gb |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Se per qualche (oscuro) motivo puoi solamente dichiarare un puntatore, allora alloca memoria, copia la stringa e lavora sulla copia.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
|
scusa hai ragione....vabbè mi sn espresso male....cmq...facendo come hai detto tu in che modo posso ottenere il risultato finale...facendo funzionare anke la strcpy
__________________
O'Napule dint'o'core.......... -MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3 -IPhone 3GS 16 GB -Ipad wifi+3g 64gb |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Nota bene: nel post iniziale vai a cercare una sottostringa e quando la trovi, la sostituisci usando strcpy. Come è già stato detto, strcpy copia anche il nullo, pertanto se la sottostringa ce l'hai nel mezzo, ti ritrovi alla fine con la stringa troncata.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
|
perdonami quindi cosa dovrei dikiarare mi fai capire la linea di codidce ke nn ho ben inteso....grazie
__________________
O'Napule dint'o'core.......... -MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3 -IPhone 3GS 16 GB -Ipad wifi+3g 64gb |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:54.