C 将文本永久保存到文件并从中读取
大家好,我必须用C编写一个简单的登录程序,我在保存用户名、全名和密码时遇到问题,因为我需要选择“1”进行注册,选择“2”进行登录,但每次我退出控制台并尝试读取文件时,所有内容都会消失C 将文本永久保存到文件并从中读取,c,C,大家好,我必须用C编写一个简单的登录程序,我在保存用户名、全名和密码时遇到问题,因为我需要选择“1”进行注册,选择“2”进行登录,但每次我退出控制台并尝试读取文件时,所有内容都会消失 #include <stdio.h> int main() { FILE *f = fopen("users.txt", "w+"); if (f == NULL) { printf("N/A"); exit(1); } int choose, username[15], fullName[20
#include <stdio.h>
int main() {
FILE *f = fopen("users.txt", "w+");
if (f == NULL) {
printf("N/A");
exit(1);
}
int choose,
username[15],
fullName[20],
password[15],
// confirmPassword[15];
printf("Welcome!\n");
printf(" 1: Sign up\n 2: Sign in\n");
printf("--------------------------------\n");
scanf("%d", &choose);
if(choose==1) {
printf("Username: ");
scanf("%s", &username);
printf("Full name: ");
scanf("%s", &fullName); /// BECAUSE OF SPACE IT COUNTS LIKE A PASSWORD
printf("Password: ");
scanf("%s", &password);
fprintf(f, "%s\n%s\n%s", username, fullName, password);
}
if(choose==2) {
char c;
printf("Username: ");
while( c != EOF) {
c = fgetc(f);
printf("%c",c);
}
}
fclose(f);
return 0;
}
#包括
int main(){
文件*f=fopen(“users.txt”,“w+”);
如果(f==NULL){
printf(“不适用”);
出口(1);
}
int选择,
用户名[15],
全名[20],
密码[15],
//确认密码[15];
printf(“欢迎!\n”);
printf(“1:注册\n 2:登录\n”);
printf(“-------------------------------------\n”);
scanf(“%d”,选择(&C));
如果(选择==1){
printf(“用户名:”);
scanf(“%s”,用户名(&s));
printf(“全名:”);
scanf(“%s”,&fullName);///由于空间的关系,它的计数与密码一样
printf(“密码:”);
scanf(“%s”和密码);
fprintf(f,“%s\n%s\n%s”,用户名、全名、密码);
}
如果(选择==2){
字符c;
printf(“用户名:”);
而(c!=EOF){
c=fgetc(f);
printf(“%c”,c);
}
}
fclose(f);
返回0;
}
我也必须处理哈希,但我会自己尝试。关于///评论的帮助 根据前面的评论和我的想法,下面是您如何修复代码: 1.使用int c或无符号int c声明c变量。 2.设置c tp be(只要不是EOF);
3.make do while循环,最后检查EOF。注释有什么问题?@GerardoBLANCO问题是当我键入全名时,我必须使用空格,然后在中保存第二个单词&password看起来很像代码执行时
char c;的值是多少。。。当(c!=EOF){
时,关键是您调用未定义的行为试图访问未初始化的值。您需要int c=fgetc(f)
以正确初始化它。如前所述,当您声明char c;
时,在为变量c
分配一个值之前,有一种已知的方法可以知道散乱垃圾值是什么作为变量c
的内存位置。此外,类型必须是int
Aschar
在little endian机器上不会匹配EOF
。