Benutzerregistrierung. Fehrbesserungsvorschläge gesucht!


  • Mod

    roflo schrieb:

    fflush ist btw standard und für Ausgabeströme gut definiert.

    Aber auf Eingabeströmen, wie hier gemacht, ist es undefiniertes Verhalten. Das ist auch kein theoretischer Ausnahmefall, sondern wird dir auf Nicht-Windowssystemen tatsächlich jede Menge Unfug anrichten.



  • Also mittlerweile siehts so aus...

    Das hier ist die Initialisierung. Vor dem ersten Start.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
        mkdir("User_Data");
    
        FILE *UserData;
        if((UserData = fopen ("User_Data\\COUNTER_User.txt","w")) == 0) {
                     fprintf(stderr,"Fehler bei der Initialisierung.");
                     sleep(1000);
                     return 1;
                     }
        else {
                     int temp = 0;
                     fprintf(UserData,"%d",temp);
                     fclose(UserData);
                     }
    
      system("PAUSE");	
      return 0;
    }
    

    Ich habe die Codetags jetzt kapiert. Muhahah.

    Das ist das überarbeitete alte.
    Wie ich die Daten allerdings wieder auslesen soll weiß ich nicht. Werde wohl doch wieder den Benutzernamen als Datei oder Ordnernamen verwenden, dann finde ich das jeweils zugehörige Passwort auch wieder.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void chomp(char *str) {
       size_t p=strlen(str);
       str[p-1]='\0'; }
    
    int main(int argc, char *argv[])
    {   FILE  *UserCounter;
        int answerUserCounter;
        int newUserCounter ;
    
        if((UserCounter = fopen("User_Data\\COUNTER_User.txt","r")) == NULL) {
                        fprintf(stderr, "Systemfehler1");
                        sleep(2000);
                        return 1;
                        }
        else {          
    
                               fscanf(UserCounter, "%d", &answerUserCounter);  
                               fclose(UserCounter);
                               }
    
        FILE *UserData;
    
        char getUserName [20];
        char getUserPW1 [20];
    
        int decisionName;      
    
    do{   
    
    printf ("Willkommen bei DD V1.0!\n\nLegen sie zunaechst ihren Benutzernamen und ihr Passwort fest.\nBenutzername: ");
           fgets(getUserName,20,stdin);
           chomp(getUserName);
    
                printf("Moechten sie diesen Benutzernamen festlegen?\n\n [1] Ja    | [2] Nein    | [3] Benutzerkontenerstellung abbrechen"); 
          decisionName=getch();
    
    if(decisionName=='3') {
          return 0;}
    }while(decisionName!='1');            
                                 char FileName [30] = {"User_Data\\"};
                                               char bufferUserCounter[10];
                                               sprintf(bufferUserCounter, "%d", answerUserCounter);
                                          strcat(FileName,bufferUserCounter);
                                          strcat(FileName,".txt");
    
    int decisionPW;
    do{     char getUserPW2 [20];
    do{
    printf("\n\nErster Schritt zum Erstellen des Benutzerkontos '%s' erfolgreich!\nWaehlen sie nun ihr Passwort\n\nPasswort: ",getUserName);
            fgets(getUserPW1,20,stdin);
            chomp(getUserPW1);  
    
                    printf("Passwort wiederholen: ");
                    fgets(getUserPW2,20,stdin);
                    chomp(getUserPW2);
    }while((strcmp(getUserPW1,getUserPW2))!=0);  
    
                printf("Moechten sie dieses Passwort festlegen?\n\n [1] Ja    | [2] Nein    | [3] Benutzerkontenerstellung abbrechen");
                decisionPW=getch();
    if(decisionPW=='3'){
           return 0; }             
    }while(decisionPW!='1');
    
    if((UserData = fopen(FileName, "w")) == NULL) {
                fprintf(stderr, "Systemfehler2.");
                return 1;
                }
    else {
                fprintf(UserData, "%s\n%s", getUserName, getUserPW1);
                          if((UserCounter = fopen("User_Data\\COUNTER_User.txt","w"))== NULL) {
                                        fprintf(stderr, "Systemfehler3.");
                                        sleep(2000);
                                        return 1;
                                        }
                          else {
                                        newUserCounter = answerUserCounter + 1;
                                        fprintf(UserCounter,"%d",newUserCounter);
                                        }
                }
    fclose(UserData);
    fclose(UserCounter);
    
    printf("\n\nErstellen des Benutzerkontos war erfolgreich!");
    sleep(3000);
    
    //Hier soll mal der Übergang zum eigentlichen Program hin
    
      return 0;
    }
    


  • MrSonak schrieb:

    Ich habe die Codetags jetzt kapiert. Muhahah.

    Dann drück jetzt mal die Tasten fürs Auto-Einrücken in Deiner IDE.
    Bei MSVC wären das Strg+A gefolgt von Alt+F8.


Anmelden zum Antworten