Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Data una stringa, levare gli spazi, non va!
Forum - C/C++ - Data una stringa, levare gli spazi, non va!

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Vi posto il mio codice forse c'era qualche altro modo, ma io avevo pensato a questo ma nn funziona:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. char str[80];
  9. int i;
  10. int len;
  11. cout << "Scrivi una frase\n";
  12.  gets(str);
  13.   len= strlen(str);
  14.   for(i=0;i<len;i++)
  15. {
  16.       if(str[i] == ' ') {// Se trova un carattere vuoto lo dovrebbe sostituire con quello contenuto nell'indice successivo
  17.         for(int x=0; x<len; x++) {
  18.         str[i] = str[i+1];
  19.         cout << i;
  20.        }
  21. }
  22. }
  23.  cout << str << "\n";
  24. return 0;
  25. }



EDIT: Nell'if e nell'assegnazione dopo il secondo ciclo for, l'indice di str è "", ma nel code nn lo fa comparire

Ultima modifica effettuata da il 07/05/2007 alle 21:08
PM Quote
Avatar
cH!cus (Ex-Member)
Pro


Messaggi: 149
Iscritto: 03/04/2006

Segnala al moderatore
Postato alle 21:29
Lunedì, 07/05/2007
Ecco il codice:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. int main() {
  7.     char str[80];
  8.     int i, x;
  9.     int len;
  10.     cout << "Scrivi una frase\n";
  11.     gets(str);
  12.     len= strlen(str);
  13.    
  14.     for(i=0;i<len;i++) {
  15.                        if(str[i] == ' ') {
  16.                                  
  17.                                  for(x=i; x<len; x++) {
  18.                                          str[x] = str[x+1];
  19.                                  }
  20.                        }
  21.                        x = 0;
  22.     }
  23.     cout << str << endl;
  24.     cin >> i;
  25.     return 0;
  26. }



compilato con devcpp, a me non da errori. ciao! ;)

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:45
Lunedì, 07/05/2007
Siamo arrivati a questo:
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cctype>
  4. #include <cstring>
  5. using namespace std;
  6.  
  7. int main() {
  8. char str[80];
  9. int i, x;
  10. int len;
  11. cout << "Scrivi una frase\n";
  12. gets(str);
  13. len= strlen(str);
  14.  
  15. for(i=0;i<len;i++) {
  16. if(isspace(str[i])) {
  17.  
  18. for(x=i; x<len; x++) {
  19. str[x] = str[x+1];
  20. }
  21. }
  22. x = 0;
  23. }
  24. cout << str << endl;
  25. cin >> i;
  26. return 0;
  27. }



Ma se ci sono + spazi di seguito nn li toglie tutti.

PM Quote
Avatar
vbdummy (Normal User)
Newbie


Messaggi: 7
Iscritto: 07/05/2007

Segnala al moderatore
Postato alle 22:43
Lunedì, 07/05/2007
Ma hai provato ad usare "trim" per eliminare gli spazi ? In pratica fa quello che tu stai cercando di fare

PM Quote
Avatar
cH!cus (Ex-Member)
Pro


Messaggi: 149
Iscritto: 03/04/2006

Segnala al moderatore
Postato alle 0:47
Martedì, 08/05/2007
Ho trovato questa funzione per la rete:

Codice sorgente - presumibilmente C++

  1. char *str_trim(char *stringa)
  2. {
  3. char *attuale, *in_no_b;
  4.  
  5. for (attuale = in_no_b = stringa; *attuale != '\0'; ++attuale)
  6.   if (*attuale != ' ' && *attuale != '\t')
  7.     *(in_no_b++) = *attuale;
  8. *in_no_b = '\0';
  9.  
  10. return(stringa);
  11. }



dovrebbe fare a caso tuo. ciao! ;)

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:43
Martedì, 08/05/2007
Si ok ora il programma funziona alla perfezione, ma chi mi puo spiegare questa funzione trimm?

PM Quote