ciao a tutti,
lavoro da poco con c e sto provando a realizzare una funzione che mi tolga gli spazi a sx e dx di una stringa (il trim di visual basic per intenderci).
questo è il risultato al quale sono giunto:
la funzione in se non è molto difficile, ma è la prima volta che mi trovo a lavorare con i puntatori nella pratica e sono sicuro di aver scritto parecchie vaccate.codice:... int main() { char nome[100]; char *p1; printf("\nInserisci il nome : "); gets(nome); trim(p1, nome); puts(p1); while(!getchar()=='\n'); } void trim(char *p, const char *str) { int i, inizio, fine; char *tmp; tmp = (char *) malloc(sizeof(char)); for(inizio=0; str[inizio]!='\0'; inizio++) { if(str[inizio]!=' ') break; } for (fine=strlen(str); fine>0; fine--) { if(str[fine]!=' ' && str[fine]!='\0') break; } tmp = (char *) realloc(tmp, (fine - inizio + 2) * sizeof(char)); if (tmp != NULL) { for (i=0; i<=(fine-inizio); i++) { tmp[i] = str[inizio+i]; } tmp[++i]='\0'; strcpy(p, tmp); } else { printf("\nMemoria Insufficiente\n"); } }
apparentemente cmq la funzione funziona quando la variabile nome è inferiore ai 20 caratteri, in caso contrario ne viene aggiunto uno a caso in fondo..
qualcuno può dirmi, senza paura di ferirmi, cos'ha che non va quanto scritto?

, cos'ha che non va quanto scritto?
Rispondi quotando
