Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965

    [C] Eliminazione spazi bianchi ed errore

    Date un'occhiata qui

    codice:
    #include <stdio.h>
    
    char* delSpaces(char *);
    
    main(){
    
    	char* str = "Ecco la mia    stringa";
    
    	printf("%s",str);
    
    	str = delSpaces(str);
    
    	printf(str);
    
    }
    
    char* delSpaces (char* str){
    	int INSPACE=0, i=0, j=0;
    	char * str2 = "a";
    
    	for(;str[i]!='\0';i++){
    		if(str[i]==' '){
    			if(INSPACE!=1)
    				str2[j++] = str[i];
    			
    			INSPACE=1;
    		}
    		else{
    			INSPACE=0;
    			str2[j++] = str[i];
    		}			
    	}
    	return str2;
    
    }
    Durante l'esecuzione viene visualizzata la finestra di microsoft che dice che l'applicazione verrà chiusa.
    Non capisco il perchè

  2. #2

    Re: [C] Eliminazione spazi bianchi ed errore

    Originariamente inviato da keratox
    Date un'occhiata qui

    codice:
    #include <stdio.h>
    
    char* delSpaces(char *);
    Ti sei dimenticato, nella dichiarazione del prototipo della funzione, di scrivere il nome del puntatore.
    Meglio così:
    codice:
    char* delSpaces(char *str)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Non è quello l'errore.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Guarda che str2 punta ad un'area che non e' sufficiente per contenere la stringa originale.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Ah!

    Devo intervenire sulla memoria con malloc() & co ?

    Non ci sono ancora arrivato nel testo che sto leggendo.

    Cmq grazie, ciao

  6. #6
    Utente di HTML.it L'avatar di eclips
    Registrato dal
    Apr 2005
    Messaggi
    48
    codice:
    #include <stdio.h>
    
    
    char* delSpaces(char *);
    
    int main(void){
    
    	char* str = "Ecco la mia    stringa";
    
    	printf("%s",str);
    
    	str = delSpaces(str);
    
    	printf("\n%s",str);
    	system("PAUSE");
        	return 0;
    }
    
    char* delSpaces (char* str){
    	int INSPACE=0, i=0, j=0;
    	char * str2;
    
    	//for(;str[i]!='\0';i++){
        while(str[i]!='\0'){
        	if(str[i]==' '){
    			if(INSPACE!=1)
    				str2[j++] = str[i];
    			
    			INSPACE=1;
    		}
    		else{
    			INSPACE=0;
    			str2[j++] = str[i];
    		}			
    	i++;
    	}
    	return str2;
    
    }
    non so se è quello che cercavi :master:

    saluti

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    MMH.. non riesco a vedere cos'hai cambiato, a parte i cicli.

    Comunque dà il medesimo errore.

  8. #8
    Utente di HTML.it L'avatar di eclips
    Registrato dal
    Apr 2005
    Messaggi
    48
    ho cambiato l'inizializzazione di char * str2 a me non da piu l'errore di windows :master:

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Veramente non hai cambiato l'inizializzazione ... non l'hai proprio fatta! E questo e' un errore grave.

    A quale zona di memoria punta str2? Chissa' dove va a scrivere la funzione ...!

    Devi "allocare la memoria necessaria" e assegnare l'indirizzo del primo carattere al puntatore e solo dopo lo usi ...

  10. #10
    Utente di HTML.it L'avatar di eclips
    Registrato dal
    Apr 2005
    Messaggi
    48
    char * str2 = (char *)malloc (sizeof(char*));


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.