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 vonmain
.
-
~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.