\n



  • #include <stdio.h>
    #include <string.h>
    void dreh(char *x);

    int main(void)
    {
    FILE *fp1, *fp2;
    char quelle[40], ziel[40], a[303];
    printf("Quelldatei = ? ");
    scanf("%s",quelle);
    printf("Zieldatei = ? ");
    scanf("%s",ziel);

    fp1 = fopen(quelle,"r");
    fp2 = fopen(ziel,"w");

    if(fp1==NULL)
    {
    printf("Datei nicht gefunden\n");
    return(-1);
    }
    if(fp2==NULL)
    {
    printf("Fehler!\n");
    return(-1);
    }

    fgets(a,303,fp1);

    while(!feof(fp1))
    {
    dreh(a);
    fputs(a,fp2);
    fgets(a,303,fp1);
    }

    fclose(fp1);
    fclose(fp2);

    return(0);
    }

    void dreh(char *x)
    {
    char *p, wert;
    p=x+strlen(x)-2;
    while(x<p)
    {
    wert = *x;
    *x = *p;
    *p = wert;
    x++;
    p--;
    }
    }

    __________________________________________

    Ich habe bei diesem Programm ein kleines Problem, ich schrieb die funktion dreh so(liest aus textdatei, dreht jede zeile um, schreib das umgedrehte in eine andere textdatei):

    void dreh(char *x) // dreht das Array um
    {
    char *p, wert;
    p=x+strlen(x)-3; //<-------
    while(x<p)
    {
    wert = *x;
    *x = *p;
    *p = wert;
    x++;
    p--;
    }
    }

    So wie ich es in erinnerung habe besthet der Zeilenvorschub aus 2 Char Variablen, da p=x+strlen(x) auf dem \0 stehn würde müsste ich somit -3 nehmen. Funktionierte leider nicht. Kann mir jemand erklären weshalb -2 und nicht -3 richtig ist?

    Wenn ich die bedingung habe das jede Zeile maximal aus 300 Zeichenbesteht müsste ich doch auch ein speicher Array von 303 Zeichen eröffnen (2 für \n, 1 für \0). fgets liest ja im gegensatz zu gets auch das \n ins Array ein.

    Vielen dank!

    MfG



  • "\n" ist intern EIN Zeichen, der Backslash zeigt nur dem Compiler, dass das n nicht als "Text-n" interpretiert werden soll, sondern als Steuerzeichen


Anmelden zum Antworten