[C] Problem mit fgets()

EngGi

Mitglied
Kann mir jemand bitte sagen, was hier das Problem ist:

Code:
#include <stdlib.h>
#include <stdio.h>


int main(int argc, char *argv[])
{
    char *User[10], *Pass[10];
    int x;
    FILE *Passwords;
    FILE *Users;
    Passwords = fopen("Passwords.txt", "r");
    Users = fopen("Users.txt", "r");
    for (x = 0;!feof(Passwords); x++)
    {
      fgets(Pass[x], 15, Passwords);  
    }
    for (x = 0;!feof(Users); x++)
    {
      fgets(User[x], 15, Users);  
    }
    printf("%s %s", User[0], Pass[0]);
    fclose(Passwords);
    fclose(Users);
}
Wenn ich das Programm starte, dann stürtzt es gleich ab.
Passwords.txt und Users.txt existieren und sind gefüllt.
Kann mir bitte jemand helfen?

Danke schon im voraus!
 
Hi.

Du legst dort 2 Arrays (mit 10 Elementen) von Zeigern auf char an die du nicht initialisierst und keinen Speicher bereitstellst.

C:
char User[10][30], Pass[10][30]; // 10 user-passwort Paare mit max. 29 Zeichen

Du machst keine Fehlerprüfung - wederbei der Eingabe noch ob die Dateien überhaupt geöffnet werden konnten.

Gruß
 
Moin,

nur mal so auf die Schnelle :

Dies ist Unsinn!

Code:
// entweder fixe Länge = 10
char User[10];

// oder dynamisch
char *User = new char[10];
// hierbei nicht vergessen:
...
delete[] User;

fgets(Pass[x], 15, Passwords);
Wenn Du (bis zu) 15 Zeichen lesen willst, dann muss auch die Variable diese Länge aufnehmen können ! !

printf("%s %s", User[0], Pass[0]);
Das kann so nicht klappen!

Code:
// entweder zeichenweise
printf("%c %c", User[0], Pass[0]);

// oder als String
printf("%s %s", &User, &Pass);

Und was genau heißt "das Programm stürzt ab" :confused:
Wo? Welche Fehlermeldung(en) ?

Gruß
Klaus
 
@deepthroat
Danke für die Idee mit dem 2d Array, ich werd's gleich ausprobieren

@vfl_freak
char *User[10];

Dies ist Unsinn!

Wieso denn? Ich habe doch nur ein Array aus Strings deklariert!
Natürlich hätte ich es auch so machen können:
Code:
char *User0;
char *User1;
char *User2;
char *User3;
char *User4;
char *User5;
char *User6;
char *User7;
char *User8;
char *User9;
aber so ist es einfacher und besser handbar;
Zitat:
printf("%s %s", User[0], Pass[0]);

Das kann so nicht klappen!
Vergiss nicht dassUser[0] ein char* also ein vollwärtiger String ist

Und mit "das Programm stürtzt ab" meine ich dass beim Start des Programmes ein Fenster aufgeht in dem steht dass das Programm geschlossen werden musste, weil ein Fehler aufgtreten ist.
 
Moin,

Ich habe doch nur ein Array aus Strings deklariert!

ja klar - mea culpa - ich war auf dem Trip, dass Du immer nur genau EINEN User + Passwort auslesen wolltest ... weiß auch nicht mehr warum :-(
(bin wohl mal wieder urlaubsreif :D)

deepthroat hat daher natürlich Recht !

Gruß
Klaus
 
Ich weiss jetzt wo der Fehler liegt!
Mein Programm kann die Dateien nicht öffnen!
Hat irgentwer ne Ahnung woran das liegen könnte?

Danke schon im voraus.
 
Ich weiss jetzt wo der Fehler liegt!
Mein Programm kann die Dateien nicht öffnen!
Hat irgentwer ne Ahnung woran das liegen könnte?
Du führst das Programm in einem Verzeichnis aus, in dem die Dateien nicht vorhanden sind. Wechsle zuerst in das entsprechende Verzeichnis wo die Dateien liegen und prüfe ob die Dateien geöffnet werden konnten.

Gruß
 
Zurück