Falschen Variableninhalt



  • Hi zusammen!

    bei der unten stehenden Funktion hat die Variable "FCC" den falschen Inhalt.
    Anstatt "password.txt" hat sie "password.txt" und dahinter einige Sonderzeichen.

    Irgendwie sehe ich den Wald vor lauter Bäumen nicht...

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <time.h>
    #include <math.h>
    
    extern MaxIndex;
    extern SHIFT;
    
    void FuncCrypt() {
    
    	/*  */
    
    	FILE *FFileA;
        FILE *FFileB;
        FILE *FFileC;
    
        char FCA[MaxIndex];
        char FCB[MaxIndex];
        char FCC[MaxIndex];
    
        int FIA=0;
        int FIB=0;
        int FIPass=0;
    
        unsigned long int FLIA=0;
    
        time_t t;
        time(&t);
    
    	srand((unsigned int)t);
    
    	FCC[0]='p';
        FCC[1]='a';
        FCC[2]='s';
        FCC[3]='s';
        FCC[4]='w';
        FCC[5]='o';
        FCC[6]='r';
        FCC[7]='d';
        FCC[8]='.';
        FCC[9]='t';
        FCC[10]='x';
        FCC[11]='t';
    
        printf("Input FileName\n");
    
        for(FIA=0;FIA<=3;++FIA) {
    
            FIA=0;
    
            scanf("%s",FCA);
    
            FFileA = fopen (FCA, "rb");
    
            if(FFileA == NULL) {
    
                printf("file can not open.\n");
    
        	} else {    
    
                printf("file exist.\n");
    
                printf("Output FileName\n");
    
                scanf("%s",FCB);
    
                FFileB = fopen(FCB,"a+b");
    
                if(FFileB == NULL) {
    
                    printf("file can not open.\n");
    
                } else {
    
                    printf("Output FileName open\n");
    
                    FFileC = fopen(FCC,"a+b");
    
                    if(FFileC == NULL) {
    
                        printf("file can not open.\n");
    
                    } else {
    
                        printf("Password FileName open\n");
    
                        printf("%s",FCC);
    
                        printf("\n");
    
                        while((FIB = fgetc(FFileA))!=EOF) {
    
                            /*
                            Loop
                            - Read File
                            - Generate Password
                            - Crypt File Data
                            - Save password
                            - Write File
                            */
    
                            FIPass = rand() % SHIFT;
    
                            printf("Password\n");
                            printf("%i", FIPass);
                            printf("\n");
    
                            printf("Input\n");
                            printf("%i", FIB);
                            printf("\n");
    
                            FIB = FIB + FIPass;
    
                            if(FIB>SHIFT) {
    
                                FIB = FIB - SHIFT;
    
                            }
    
                            printf("Input\n");
                            printf("%i", FIB);
                            printf("\n");
    
                            fprintf(FFileB,"%c",FIB);
    
                            fprintf(FFileC, "\r\n");
    
                            fprintf(FFileC,"%i",FIPass);
    
                            fprintf(FFileC, "\r\n");
    
                        }
    
                        FIA = 5;
    
                    }
    
                }
    
            }
    
            fclose(FFileA);
            fclose(FFileB);
            fclose(FFileC);
    
        }
    
    }
    

    Danke

    Edit: Auch wenn ih char FCC[MaxIndex] in char FCC[12] umschreibe ist der Fehler immer noch vorhanden.



  • printf erwartet bei dem Formatspecifier %s ein Nullterminiertes char-Array.

    Schon mal was von strcpy gehört?
    Oder von der Initialiosierung (Wertzuweisung bei der Definition)?

    srand ruft man nur einmal im ganzen Programm auf. Z.B am Anfang von main .



  • ~um 22:10:34 18.06.2014~

    C Neuling schrieb:

    Edit: Auch wenn ih char FCC[MaxIndex] in char FCC[12] umschreibe ist der Fehler immer noch vorhanden.

    Hast du mein Post vorher gesehen?

    Denn für 12 Zeichen in einem C-String ist ein char-Array mit 12 Elementen zu klein.



  • Das Array FCC habe ich zu folgendes umgeschrieben:

    char FCC[]={'p','a','s','s','w','o','r','d','.','t','x','t'};
    

    srand wurde am Anfang der main verschoben.

    Zum Testen wurden alle printf() entfernt.

    Ich stell mal, ganz troll-mäßig, die Frage: Das Array FCC müsste jetzt doch am Ende nur ".txt" enthalten, oder? 🤡



  • DirkB schrieb:

    printf erwartet bei dem Formatspecifier %s ein Nullterminiertes char-Array.

    Lies dir den Satz von DirkB nochmal ganz genau durch und vergleiche mit deinem String FCC.



  • C Neuling schrieb:

    Ich stell mal, ganz troll-mäßig, die Frage: Das Array FCC müsste jetzt doch am Ende nur ".txt" enthalten, oder? 🤡

    Nein!
    Denn ".txt" ist ein Stringliteral, das der Compiler automatisch nullterminiert.
    Dein Array ist aber nicht nullterminiert.


Log in to reply