|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
[C] Questa funzione toglie i blank ripetuti?!
Io l'ho scritta così, ma non mi pare fare quello che voglio.
Codice:
/* Compatta gli spazi delle notizie mal formate */ void layout(char *notizia) { int i=0, ii=0, op=0, size=strlen(notizia); char supporto[size]; supporto[0]='\0'; while (notizia[i]!='\0') { if (notizia[i]!=' ') { supporto[ii]=notizia[i]; i++; ii++; op=0; } else { if (op==0) { supporto[ii]=notizia[i]; i++; ii++; op++; } else i++; } } supporto[ii]='\0'; strcpy(notizia, supporto); } Io la richiamo così: Codice:
layout(buffer2);
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Se ho capito bene, se nella stringa ci sono più spazi tra le parole, tu ne vuoi mettere solo 1, giusto??
Io farei così: Codice:
void compact_spaces (char *str) { char *wrt = str--; int flag = 0; do { str++; if (*str == ' ') { if (flag == 0) { flag = 1; *wrt = *str; wrt++; } } else { flag = 0; *wrt = *str; wrt++; } } while (*str); }
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 03-02-2007 alle 10:35. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Funziona bene, grazie.
EDIT Anzi mi pare di no.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 03-02-2007 alle 18:00. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Forse ho detto 1 cavolata, ma da qualche parte non ci deve essere:
*srt = *wrt; Al posto di: *wrt = *str; Altrimenti alla fine la stringa in entrata come fa a risultare modificata?! ![]() Forse la chiave di tutto è: char *wrt = str--; che mi indica che sto lavorando su 2 stringhe che però sono sovrapposte come celle di memoria?! Quindi modificando wrt alla fine ho modificato anche str?! ![]() Se è così allora 6 il mago delle ottimizzazioni. ![]()
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 03-02-2007 alle 18:08. |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
In pratica quando ci sono più spazi, 'wrt' si "ferma" mentre 'str' va comunque avanti. Quindi man mano che si va avanti, i caratteri vengono copiati più indietro. Spero di essermi spiegato in modo chiaro.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Quote:
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Hai mica sottomano anche una funzione che faccia anche, solo parte di, questo:
[C] Esiste funzione che trasforma HTML in TXT?! In pratica il testo HTML io lo ho già tutto caricato in 1 stringa in quanto è corto.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Eeehm
![]() Ho 1 altro problema ![]() [C] Sostituire 1 sottostringa in 1 stringa: ho fatto questa funzione.. Ho provato a seguire la tua falsa riga, ma ho cannato... ![]()
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:19.