Buchstaben ersetzen



  • abcd schrieb:

    while (buchstabe!=EOF)
            {
                buchstabe=fgetc(pfile);
    
                if (buchstabe=='ä')
                    printf("ae");
                else
                    printf("%c",buchstabe);
            }
    


  • _matze schrieb:

    Wenn du allerdings die Datei verändern willst, dann musst du die nachfolgenden Zeichen verschieben.

    Dann schreibt man sinnvollerweise in eine neue Datei.



  • Spring doch einfach von Umlauf zu Umlauf, und ersetze sie dann entsprechend. Der Text dazwischen interessiert dich nicht sonderlich, den kannst du doch ausgeben, wie er ist.

    strchr(...) ist dein Freund 😉



  • Danke, auf die Idee hätte ich selber kommen können.

    1)Weil du mich auf die Idee gebracht hast wollte ich das auch mal versuchen, aber es ändert überhaupt nichts an der Datei.

    2)Was mich noch interessiert, wenn man mit fgetc oder fgets einliest wie kann man das allerletzte Zeichen von der Datei finden.
    Als ich mit fgets versucht habe einzulesen hat er immer beim letzten Zeichen der Zeile '\0' ausgegeben.

    datei=fopen(argv[1], "r+");
    
        if (pfile!=NULL)
        {
            printf("Datei %s konnte geöffnet werden\n\n",argv[1]);
    
            while (buchstabe!=EOF)
            {
                buchstabe=fgetc(datei);
    
                if (buchstabe=='ä')
                {
                    fprintf(datei,"ae");
                }
                else
                fprintf(datei,"%c",buchstabe);
            }
    


  • fseek( file, 0, SEEK_END );
    


  • Wenn ich den Text auslese überschreibt er mir nicht den Text und im Dos steht ein ganz komischer Text. Was kann das sein.

    pfile=fopen(argv[1], "r+");
    
     while (buchstabe!=EOF)
            {
                buchstabe=fgetc(pfile);
    
                if (buchstabe=='ä')
                {
                fputc(buchstabe,pfile);
                printf('$',buchstabe);
                }
                else
                {
                fputc(buchstabe,pfile);
                printf("%c",buchstabe);
                }
    
            }
    


  • abcd schrieb:

    if (buchstabe=='ä')
                {
                fputc(buchstabe,pfile);
                printf('$',buchstabe);
                }
                else
                {
                fputc(buchstabe,pfile);
                printf("%c",buchstabe);
                }
    
            }
    

    Was denkst du, was hier passiert?!



  • _matze schrieb:

    switch(buchstabe) {
    	case 'ä':
    		printf("ae");
    		break;
    	case 'ö':
    		printf("oe");
    		break;
    	case 'ü':
    		printf("ue");
    		break;
    	default:
    		printf("%c",buchstabe);
    }
    

    ^^
    das könnte schon an 'nem compiler scheitern, der sich weigert, quelltexte zu fressen, die irgendwelche komischen sonderzeichen enthalten.
    🙂



  • Sag mal, was machst Du, damit das hier nicht zum unkontrollierten Absturz führt:

    printf('$',buchstabe);
    

    Ich wette damit kriegt man bei Windows 95 noch reproduzierbar Bluescreens 🙂
    Bei Dir scheint es ja zu einem wunderschönen Memory-Dump zu führen:

    Wenn ich den Text auslese überschreibt er mir nicht den Text und im Dos steht ein ganz komischer Text. Was kann das sein.

    Außerdem was soll er den bitte überschreiben? Du gibst es doch bloß auf der Konsole aus? (Oder meinst Du mit DoS, dass Du es nicht auf der Konsole ausgibst, sondern einen fremden Server damit attackierst...?)



  • Die Zeile war falsch.

    if (buchstabe=='ä')
                {
                buchstabe='&';
                fputc(buchstabe,pfile);
                printf("%c",buchstabe);
                }
                else
                {
                fputc(buchstabe,pfile);
                printf("%c",buchstabe);
                }
    
            }
    

    Geplant war dass es jeden Buchstaben ausließt und schaut ob es ein "ä" ist. Falls ja soll er es durch ein "&" ersetzen und im Dos und in der jeweiligen Datei ausbessern.



  • Sag nicht immer DOS. Du meinst höchstwahrscheinlich die Win32-Konsole. Das ist nicht dasselbe. 🙂


Anmelden zum Antworten