Nach <strg>+<Z> hört das Program komplett auf



  • #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	char buffer[2001];
    	char backup[2001];
    	char c;
    	char replace;
    	int i=0;
    	int count=0;
    	char rep1, rep2, rep3;
    
    	printf("\033[2J");
    	printf("Bitte Text eingeben. Ende mit <Strg>+<Z>:\n");
    	while((buffer[i] = getchar()) != EOF)
    	{
    		if(i>1999)
    		{
    			printf("\n\nZu viele Zeichen. Die ersten 2000 werden gespeichert.");
    			break;
    		}
    		i++;
    	}
    	buffer[i]='\0';
    
    	printf("\nWelches Zeichen moechten Sie suchen?\n");
    	scanf("%c", &c);
    	while (getchar() != '\n')
    	;
    
    	count=0;
    	i=0;
    
    	while(buffer[i] != '\0')
    	{
    		if(buffer[i] == c)
    		count++;
    		i++;
    	}
    	if(count)
    	{
    		printf("\n\nDas Zeichen %c ist %d mal enthalten\n", c, count);
    		printf("Soll es ersetzt werden? (j/n)");
    		scanf("%c", &rep1);
    		while (getchar() != '\n')
    	  ;
    	  if(rep1=='j')
    	  {
    	  	printf("\n\nErsatzzeichen angeben: ");
    	  	scanf("%c", &replace);
    	  	while (getchar() != '\n')
    	    ;
    
    	    strcpy(backup, buffer);
    
    	    i=0;
    	    while(buffer[i] != '\0')
    	    {
    	    	if(buffer[i]==c)
    	    	buffer[i]=replace;
    	    	i++;
    	    }
    	    printf("\n\nDer geaenderte Text:\n\n");
    	    puts(buffer);
    
    	    printf("\n\nSoll der urspruengliche Text wiederhergestellt werden?(j/n)");
    	    scanf("%c", &rep2);
    	    while (getchar() != '\n')
    	    ;
    
    	    if(rep2=='j')
    	    {
    	    	strcpy(buffer, backup);
    	    	printf("\n\nText wiederhergestellt. Anzeigen?(j/n)");
    	    	scanf("%c", &rep3);
    	    	while (getchar() != '\n')
    	      ;
    
    	      if(rep3=='j')
    	      {
    	      	puts("\n\n");
    	      	puts(buffer);
    	      }
    	    }
    	  }
    	}
    	else
    	printf("\n\nDas Zeichen %c ist nicht im Text enthalten.\n", c);
    }
    

    Das Programm gibt mir nicht die Gelegenheit das zu suchende Zeichen einzugeben.
    Es bricht komplett ab nach meinem <Strg> + <Z>



  • Also bei mir geht es einwandfrei......
    Der Compiler meldet mir nur, dass main einen Wert zurueckliefern sollte (also return o;) wenn ich str+ Z machen muss ich enter druecken und es funzt

    Gruß unknown12345



  • Hi,

    Der Compiler meldet mir nur, dass main einen Wert zurueckliefern sollte

    , was aber laut Standard nicht nötig ist.

    MfG Eisflamme



  • Funzt bei mir aber trotzdem.....



  • is unter Linux Strg+Z nicht Prozess unterbrechen ? ^^



  • Klappt bei mir immer noch nicht
    sobald ich <Strg>+<Z> drücke erscheint dies aufm Bildschirm:
    "[1]+ Stopped ./findchar"

    Die Progs vorher haben immer gut funktioniert

    Bin sehr ratlos, da ich mir einfach nicht vorstellen kann, was ich falsch gemacht habe.



  • is unter Linux Strg+Z nicht Prozess unterbrechen ? ^^

    korrekt. STRG+Z unterbricht den gerade laufenden Prozess. Da kannst man also nix gegen machen, weil das schon vom Betriebssystem abegfangen wird...

    Mfg, smasher1985



  • gastttt schrieb:

    Klappt bei mir immer noch nicht
    sobald ich <Strg>+<Z> drücke erscheint dies aufm Bildschirm:
    "[1]+ Stopped ./findchar"

    du willst uns aber hier nich verarschen oder ?
    Naja, wenn nich dann:
    unter Linux hälst du laufende Prozesse (zumd. in der Bash) mit Strg+Z an.
    mit "fg" kannst du ihn dann (afaik) wieder in den Vordergrund holen...
    ergo: nimm ne andre Tastenkombi zum textterminieren.
    z.b. ein \n



  • k1ro schrieb:

    du willst uns aber hier nich verarschen oder ?

    nein, ich versuch nur meinen Fehler zu finden

    klro schrieb:

    ergo: nimm ne andre Tastenkombi zum textterminieren.
    z.b. ein \n

    wie mache ich das?



  • Hallo,
    wie wäre es mal mit CTRL-D?


Anmelden zum Antworten