Einfacher Zugang ProgrammSegmentation Fehler, C Datei Hantierungsprogramm
den Einsatz von Linux in erster Linie. Ich versuche, ein Programm zu machen, das zuerst einen Benutzer anmeldet, falls er kein Konto hat, danach wird er zu einem Anmeldebildschirm geleitet, wo er seine Kontodetails eingeben wird und dann eingeloggt wird. Danach wird er wird Optionen erhalten, um einen einfachen Zugang zu Websites etc Wenn der Benutzer zum Beispiel 1 eingibt, wird er nach f.b, 2 nach quora und so weiter geleitet. Ich schaffte es erfolgreich, das Programm auf die Anmeldephase zu programmieren, aber ich tat es in einer einzigen Funktion, nämlich main(), also dachte ich, es wäre schön, wenn ich separate Funktionen zum Ausführen bestimmter Aufgaben hätte. Ich habe es diesmal in separaten Funktionen codiert, aber diesmal bekomme ich einen Segmentierungsfehler, wenn ich versuche, DATEI mit fopen() zu öffnen. Und bitte sagen Sie mir auch, wie Sie eine Website in einem Browser mit dem Konsolenbefehl öffnen können. Wie wir in Windows haben (starten Sie www.facebook.com). Hier ist der Code.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct user_data {
char name[50];
unsigned long password;
};
struct user_data new_user; // Will hold the data of new
struct user_data data_ver; // Will hold the data read
void sign_up(void);
void sign_in(void);
int main(void) {
beginning: // Beginning label in case of invalid input
printf("\t\t\t\t WELCOME TO EASY ACCESS APPLICATION");
printf("\n\n\nIf you have an account press 1.\n\nPress 2 for sign up.");
char user_choice; // Wil hold the
// user_choice i.e whether he wants to sign up/sign in
user_choice = getchar();
if (user_choice == '1') {
sign_in(); // In case of 1 goto sign in page
}
else if (user_choice == '2') {
sign_up(); // Opening file);
// In case of 2 goto sign up page
}
else {
printf("Invalid input. Try again.\n\n");
puts("Press any key to continue...");
getchar();
system("clear");
goto beginning;
}
return 0;
}
void sign_up(void) {
FILE *data = fopen("data.txt", "a");
if (data == NULL) {
printf("Unable to open file.");
scanf("%c");
system("clear");
}
system("clear");
printf("\t\t----------------------------\n"
"\t\t| |\n"
"\t\t| SIGN UP PAGE |\n"
"\t\t| |\n"
"\t\t----------------------------");
printf("\n\nName:");
scanf("%c"); // Dummy scanf
gets(new_user.name); // Getting name into the struct
printf("\nPassword.");
scanf("%lu", &new_user.password); // Getting pass into the struct
fprintf(data, "%s %lu\n", new_user.name, new_user.password); //Feeding data into FILE
system("clear");
printf("\n\nSign up complete. :) ");
printf("\n\nYou will now be directed to the sign in page. ");
printf("\nPress any key to contine...");
scanf("%c");
system("clear");
fclose(data);
}
void sign_in(void) {
}
Ich bekomme den Fehler in der ersten Zeile von sign_up Funktion, wo ich FILE öffnen.
Dieser 'scanf ("% c ");' ist nicht, was Sie denken. Wo soll scanf das gelesene Zeichen speichern? –
@SeekAddo Nun, es ist ein Dummy scanf(). Ich benutze es als Gethc() -Funktion. – Muneeb
@SeekAdoo Und übrigens wird es das readed char nirgendwo speichern (wenn ich nicht falsch liege), da ich seinen Standort nicht angegeben habe – Muneeb