Eliminare un carattere da stringa acquisita da tastiera

di il
3 risposte

Eliminare un carattere da stringa acquisita da tastiera

Salve. Sono nuova sul forum. Volevo chiedervi un aiutino. Sono alle prime armi con la programmazione C. Ho scritto un programma che elimina l'occorrenza di un carattere da una stringa acquisita da tastiera. Il programma funziona, il problema è che è un vero casino! Qualcuno potrebbe suggerirmi una versione del programma scritto in modo più ordinato e magari con funzioni apposite per ogni passaggio. Questa è la mia versione:

P.S: Considerate che uso il C89!
#include <stdio.h>

	int dim=1;
	char car;
	char elim;
	
	
void delete(char vet[], int i, int size){ 
	while(i<size-1) {
		vet[i]=vet[i+1];
		i++;
	} 
	size=size-1;
} 

int main(void){
	char frase[dim];
	
	
	printf("Scrivi frase: ");
	while(car!='\n') {
		scanf("%c",&car);
		frase[dim-1]=car;
		dim++;
	}
	
	// elimina elemento
	printf("Scrivi carattere da eliminare: ");
	scanf("%c",&elim);
	
	int i;
	for(i=0;i<dim;i++) {
		if(frase[i]==elim) {
			delete(frase,i,dim);
			i=i-1;
		}
		
	}
	
	//stampa la nuova frase
	int j;
	for(j=0;j<dim;j++){
		printf("%c",frase[j]);
	}
	return 0;
}

3 Risposte

  • Re: Eliminare un carattere da stringa acquisita da tastiera

    Un modo simpatico potrebbe essere questo, ma vista l'ora è più facile del solito che sbagli qualcosa :
    
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    //Frase ha dimensione 82 perché fgets inserisce automaticamente un \n alla fine della stringa
    char frase[82],*p,*s,c;
    puts("Inserisci la frase (Max 80 caratteri):");
    fgets(frase,82,stdin);
    frase[strlen(frase)-1]='\0';
    puts("Inserisci il carattere da rimuovere:");
    c=getchar();
    for (s=p=frase;*p=*s;p+=(*s++!=c));
    printf("Risultato: %s\n",frase);
    return 0;
    }
    Comunque la prima cosa che salta agli occhi è che dovresti rivedere le principali funzioni di libreria.
    Ad esempio per stampare una stringa è sufficiente un printf("%s",str); anziché stampare carattere per carattere, come per l'input è decisamente meglio usare fgets.
  • Re: Eliminare un carattere da stringa acquisita da tastiera

    Si, senz'altro..grazie mille! in effetti ho cominciato da poco a programmare in c.. e ho una conoscenza molto ridotta sulle funzioni di libreria..e ancora non ho cominciato ad utilizzare i puntatori. Anzi, a dire il vero sono in cerca di un manuale fatto abbastanza bene delle librerie in ansi c (c 89)
  • Re: Eliminare un carattere da stringa acquisita da tastiera

    X viky994: ho cambiato il titolo del 3d.
    Per la prossima volta ti raccomando di essere specifico.
Devi accedere o registrarti per scrivere nel forum
3 risposte