Zeichen aus String löschen



  • Hallo, ich habe folgendes Problem:
    Ich soll aus einem String einen bestimmten Buchstaben herauslöschen.
    Also wenn ich in dem String z.B. "Erde" stehen habe, soll danach nur mehr "rd" drinnen stehen. Ich soll das ganze aber ohne zusätzliche headerfiles programmieren (nur stdio).

    Vielleicht kann mir jemand einen Denkanstoß geben, wie ich da vorgehen soll!
    Danke!
    mfg, Tom_C



  • Hallo Tom_C

    Also hier der code

    #include <stdio.h>
    #include <stdlib.h>

    int main(void)
    {
    char array[30]="Hallo Erde";
    char *pScanner=NULL;

    pScanner=&array[0]; //Pointer zeigt auf das erste Element des Arrays

    while(*pScanner!='\0') //Solange Pointer ungleich e oder E
    {
    if(*pScanner=='e' || *pScanner=='E') //Wenn e oder E, überspringen
    pScanner=pScanner+1;
    printf("%c",*pScanner); //Wert des Pointers wird geprinted
    pScanner=pScanner+1;

    }
    return 0;
    }

    mfg



  • int main()
    {
        char c='a',s[]="blafasel";
        char *p=s;
        while(*p)
        {
          char *e=p++;
          if(*e==c) while(*e++) e[-1]=*e;
        }
        puts(s);
        return 0;
    }
    


  • hmm... ne verschachtelte schleife würds auch tun =b

    #include <stdio.h>
    #include <conio.h>
    
    #define MAX 11
    #define AnzZeichen 5
    
    int main(){
    
    	char wort[MAX]="Hallo Erde";
    	char zeichen[AnzZeichen]="aloE";
    	int i, j, z;
    
    	printf("%s\n", wort);
    
    	for(i=0; i<AnzZeichen-1; i++)
    	   for(j=0; j<MAX; j++)
    		   if(wort[j]==zeichen[i]){
    				for(z=j; z<MAX; z++)
    					wort[z]=wort[z+1];
    				wort[z-1]='\0';
    				j--;
    		   }
    
    	printf("%s", wort);
    
    	getch();
    
    	return 0;
    }
    


  • @all: Danke für die schnellen Antworten!

    @transcend: Warum muss ich einmal vor der Ausgabe und einmal nach der Ausgabe, pScanner = pScanner + 1 machen, das verstehe ich irgendwie nicht!

    Mfg



  • Das sollte wohl eigentlich die Es überspringen (statt auszugeben), scheitert jedoch bei mehreren e hintereinander.



  • Sorry ich hab das programm verbessert, hier bitte:

    [#include <stdio.h>
    #include <stdlib.h>

    int main(void)
    {
    char array[30]="eeeeEEEeeeeer";
    char *pScanner=NULL;

    pScanner=&array[0]; //Pointer zeigt auf das erste Element des Arrays

    while(*pScanner!='\0') //Solange Pointer ungleich e oder E
    {
    while(*pScanner=='e' || *pScanner=='E') //Wenn e oder E, überspringen
    pScanner=pScanner+1;
    printf("%c",*pScanner); //Wert des Pointers wird geprinted
    pScanner=pScanner+1;

    }
    return 0;
    }

    ]



  • Für schöner Code-Darstellung:
    Die Tags heißen

    und
    

    .
    Oder ganz einfach: Text markieren und den C/C++ Button unter den Smilies 🙂 😃 drücken


Anmelden zum Antworten