一个登录账号和密码的代码 C语言
时间: 2024-04-29 20:24:50 浏览: 20
好的,以下是一个简单的登录账号和密码验证的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char username[20], password[20];
// 获取用户名和密码
printf("请输入用户名:");
scanf("%s", username);
printf("请输入密码:");
scanf("%s", password);
// 验证用户名和密码
if (strcmp(username, "admin") == 0 && strcmp(password, "123456") == 0) {
printf("登录成功!\n");
} else {
printf("登录失败!\n");
}
return 0;
}
```
注意,以上代码仅作为参考示例,实际情况中需要根据具体需求和安全要求进行进一步优化和完善。
相关问题
我需要用C语言写一个注册账号密码的代码,账号密码储存在文件夹中
好的,以下是一个简单的代码示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_USERS 100 // 最大用户数
#define MAX_NAME_LEN 20 // 用户名最大长度
#define MAX_PASS_LEN 20 // 密码最大长度
#define FILENAME "users.txt" // 存储用户信息的文件名
// 用户结构体
struct User {
char name[MAX_NAME_LEN + 1];
char pass[MAX_PASS_LEN + 1];
};
// 获取用户数量
int get_user_count() {
int count = 0;
FILE *fp = fopen(FILENAME, "r");
if (fp != NULL) {
while (!feof(fp)) {
char c = fgetc(fp);
if (c == '\n') {
count++;
}
}
fclose(fp);
}
return count;
}
// 检查用户名是否已存在
int is_user_exists(char name[]) {
int exists = 0;
FILE *fp = fopen(FILENAME, "r");
if (fp != NULL) {
char line[MAX_NAME_LEN + MAX_PASS_LEN + 3];
while (fgets(line, MAX_NAME_LEN + MAX_PASS_LEN + 3, fp) != NULL) {
char *n = strtok(line, ",");
if (strcmp(n, name) == 0) {
exists = 1;
break;
}
}
fclose(fp);
}
return exists;
}
// 注册用户
void register_user() {
struct User user;
printf("请输入用户名(不超过 %d 个字符):", MAX_NAME_LEN);
scanf("%s", user.name);
if (is_user_exists(user.name)) {
printf("该用户名已存在,请重新输入!\n");
return;
}
printf("请输入密码(不超过 %d 个字符):", MAX_PASS_LEN);
scanf("%s", user.pass);
FILE *fp = fopen(FILENAME, "a");
if (fp != NULL) {
fprintf(fp, "%s,%s\n", user.name, user.pass);
fclose(fp);
printf("注册成功!\n");
} else {
printf("注册失败!\n");
}
}
// 登录验证
void login() {
char name[MAX_NAME_LEN + 1];
char pass[MAX_PASS_LEN + 1];
printf("请输入用户名:");
scanf("%s", name);
printf("请输入密码:");
scanf("%s", pass);
FILE *fp = fopen(FILENAME, "r");
if (fp != NULL) {
char line[MAX_NAME_LEN + MAX_PASS_LEN + 3];
int found = 0;
while (fgets(line, MAX_NAME_LEN + MAX_PASS_LEN + 3, fp) != NULL) {
char *n = strtok(line, ",");
char *p = strtok(NULL, ",");
if (strcmp(n, name) == 0 && strcmp(p, pass) == 0) {
found = 1;
break;
}
}
fclose(fp);
if (found) {
printf("登录成功!\n");
} else {
printf("用户名或密码错误!\n");
}
} else {
printf("登录失败!\n");
}
}
int main() {
int choice;
do {
printf("请选择操作:\n");
printf("1. 注册账号\n");
printf("2. 登录账号\n");
printf("3. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
register_user();
break;
case 2:
login();
break;
case 3:
printf("谢谢使用!\n");
break;
default:
printf("无效的选项,请重新选择!\n");
break;
}
} while (choice != 3);
return 0;
}
```
代码中使用了一个用户结构体来存储用户名和密码,通过文件读写来实现账号密码的储存和验证。具体实现细节可以参考代码中的注释。注意要在程序所在目录下创建一个名为 `users.txt` 的文本文件用于存储用户信息。
用c语言写一个账号密码登录,注册,修改界面
非常好的问题,让我想起了我的编程学习时光。以下是一个简单的账号密码登录、注册、修改功能的C语言实现代码:
#include <stdio.h>
#include <string.h>
//定义常量以及结构体
#define MAX_USERS 100
#define MAX_USERNAME_LENGTH 20
#define MAX_PASSWORD_LENGTH 20
struct User {
char username[MAX_USERNAME_LENGTH];
char password[MAX_PASSWORD_LENGTH];
};
int numberOfUsers = 0;
struct User users[MAX_USERS];
//声明函数
void login();
void registerAccount();
void changePassword();
void printMenu();
int doesUserExist(char *username);
//主函数
int main() {
printMenu();
return 0;
}
//打印菜单
void printMenu() {
printf("1. 登录\n");
printf("2. 注册\n");
printf("3. 修改密码\n");
printf("4. 退出\n");
int choice;
printf("请输入选项: ");
scanf("%d", &choice);
switch(choice) {
case 1:
login();
break;
case 2:
registerAccount();
break;
case 3:
changePassword();
break;
case 4:
printf("感谢使用,再见!\n");
break;
default:
printf("无效选项,请重新输入!\n");
printMenu();
break;
}
}
//登录函数
void login() {
char username[MAX_USERNAME_LENGTH];
char password[MAX_PASSWORD_LENGTH];
printf("请输入用户名: ");
scanf("%s", username);
printf("请输入密码: ");
scanf("%s", password);
int userIndex = doesUserExist(username);
if(userIndex != -1 && strcmp(users[userIndex].password, password) == 0) {
printf("欢迎回来,%s!\n", username);
} else {
printf("用户名或密码错误,请重试!\n");
login();
}
}
//注册函数
void registerAccount() {
if(numberOfUsers == MAX_USERS) {
printf("用户数量已达上限,请联系系统管理员!\n");
return;
}
char username[MAX_USERNAME_LENGTH];
char password[MAX_PASSWORD_LENGTH];
printf("请输入用户名: ");
scanf("%s", username);
int userIndex = doesUserExist(username);
if(userIndex != -1) {
printf("该用户已存在,请尝试其他账号!\n");
registerAccount();
return;
}
printf("请输入密码: ");
scanf("%s", password);
struct User newUser;
strcpy(newUser.username, username);
strcpy(newUser.password, password);
users[numberOfUsers] = newUser;
numberOfUsers++;
printf("注册成功,欢迎加入,%s!\n", username);
}
//修改密码函数
void changePassword() {
char username[MAX_USERNAME_LENGTH];
char oldPassword[MAX_PASSWORD_LENGTH];
char newPassword[MAX_PASSWORD_LENGTH];
printf("请输入用户名: ");
scanf("%s", username);
printf("请输入原密码: ");
scanf("%s", oldPassword);
int userIndex = doesUserExist(username);
if(userIndex != -1 && strcmp(users[userIndex].password, oldPassword) == 0) {
printf("请输入新密码: ");
scanf("%s", newPassword);
strcpy(users[userIndex].password, newPassword);
printf("密码修改成功!\n");
} else {
printf("用户名或密码错误,请重试!\n");
changePassword();
}
}
//判断用户是否存在
int doesUserExist(char *username) {
for(int i = 0; i < numberOfUsers; i++) {
if(strcmp(users[i].username, username) == 0) {
return i;
}
}
return -1;
}
```
希望这个简单的示例能够帮助您解决问题。请注意,此代码示例仅用于学习和演示目的。对于实际的生产环境,请务必考虑更多的安全性和稳定性措施。