轻松访问计划
首先使用linux。我正在尝试制作一个程序,首先注册用户,以防他没有帐户,之后他将被导向登录屏幕,在那里他将输入他的帐户详细信息,然后将登录。之后他将提供选项,以提供轻松访问网站等就像用户输入1一样,他将被定向到f.b,2被定向到quora,依此类推。我成功地设法将程序编码到登录阶段,但我在单个函数中进行了编写,即main(),所以我认为如果我有执行特定任务的单独函数会很好。我这次在单独的函数中对它进行了编码,但是当我尝试使用fopen()打开FILE时,我得到了分段错误。还请告诉我一些使用console命令在浏览器中打开网站的方法。就像我们在windows中一样(例如,启动www.facebook.com)。这是代码。
#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) {
}
我在sign_up函数的第一行收到错误,我正在打开文件。
答案 0 :(得分:0)
scanf("%c")
需要一个指针,用于存储读取字符。 scanf()不知道你是否提供了指针,它只是从预期的堆栈位置读取目标地址。有效地,scanf()接受一个随机地址并在那里写入字符。
使用getchar();
或char Dummy; scanf("%c",&Dummy);
。