c语言 密码登陆 简单指针
时间: 2023-09-14 18:08:46 浏览: 37
下面是一个简单的 C 语言密码登陆程序,其中使用了指针:
```c
#include <stdio.h>
#include <string.h>
int main() {
char password[10] = "123456";
char input[10];
char *p = input;
printf("请输入密码:");
scanf("%s", input);
if(strcmp(password, p) == 0) {
printf("密码正确!\n");
} else {
printf("密码错误!\n");
}
return 0;
}
```
在这个程序中,首先定义了一个密码字符串 `password`,然后定义了一个字符数组 `input` 来存储用户输入的密码。接着,定义了一个指向 `input` 数组的指针 `p`。
使用 `scanf` 函数从键盘输入密码,并将其存储在 `input` 数组中。然后通过 `strcmp` 函数比较 `password` 和 `input` 数组中的内容是否相同,如果相同,则输出密码正确,否则输出密码错误。
需要注意的是,由于 `input` 数组是一个字符数组,而 `scanf` 函数返回的是一个字符指针,因此需要使用指针 `p` 来指向 `input` 数组。
相关问题
c语言 密码登陆 指针
密码登录可以使用指针来实现,以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char password[] = "123456"; // 设置密码
char input[100]; // 定义一个字符数组存储输入的密码
char *p = input; // 定义指针指向 input 数组
printf("请输入密码:");
scanf("%s", input);
// 比较输入的密码和正确的密码是否相同
if (strcmp(p, password) == 0) {
printf("登录成功!");
} else {
printf("密码错误!");
}
return 0;
}
```
在这个例子中,我们首先定义了一个 `password` 数组来存储正确的密码。然后,我们使用 `scanf()` 函数从用户输入中获取密码,并将其存储在 `input` 数组中。接着,我们使用 `strcmp()` 函数比较 `input` 和 `password` 是否相同,如果相同则输出登录成功,否则输出密码错误。注意,在比较字符串时,我们使用了指针 `p` 指向 `input` 数组,这是因为 `strcmp()` 函数要求传入的参数是指向两个字符串的指针。
用指针,结构体,文件,链表的知识写一个游戏注册登陆的C语言代码
以下是一个简单的游戏注册登录的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_USERNAME_LENGTH 20
#define MAX_PASSWORD_LENGTH 20
typedef struct {
char username[MAX_USERNAME_LENGTH];
char password[MAX_PASSWORD_LENGTH];
} User;
typedef struct Node {
User user;
struct Node* next;
} Node;
Node* createUserNode(User user) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->user = user;
newNode->next = NULL;
return newNode;
}
void addUser(Node** userList, User user) {
Node* newNode = createUserNode(user);
if (*userList == NULL) {
*userList = newNode;
} else {
Node* current = *userList;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
int checkCredentials(Node* userList, char* username, char* password) {
Node* current = userList;
while (current != NULL) {
if (strcmp(current->user.username, username) == 0 &&
strcmp(current->user.password, password) == 0) {
return 1; // 登录成功
}
current = current->next;
}
return 0; // 登录失败
}
void saveUsersToFile(Node* userList, char* filename) {
FILE* file = fopen(filename, "w");
if (file == NULL) {
printf("无法打开文件 %s\n", filename);
return;
}
Node* current = userList;
while (current != NULL) {
fprintf(file, "%s %s\n", current->user.username, current->user.password);
current = current->next;
}
fclose(file);
}
Node* loadUsersFromFile(char* filename) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("无法打开文件 %s\n", filename);
return NULL;
}
Node* userList = NULL;
char username[MAX_USERNAME_LENGTH];
char password[MAX_PASSWORD_LENGTH];
while (fscanf(file, "%s %s", username, password) == 2) {
User user;
strcpy(user.username, username);
strcpy(user.password, password);
addUser(&userList, user);
}
fclose(file);
return userList;
}
void freeUserList(Node* userList) {
Node* current = userList;
while (current != NULL) {
Node* temp = current;
current = current->next;
free(temp);
}
}
int main() {
Node* userList = NULL;
// 从文件加载用户列表
userList = loadUsersFromFile("users.txt");
int choice;
do {
printf("1. 注册\n");
printf("2. 登录\n");
printf("3. 退出\n");
printf("请选择: ");
scanf("%d", &choice);
if (choice == 1) {
User newUser;
printf("请输入用户名: ");
scanf("%s", newUser.username);
printf("请输入密码: ");
scanf("%s", newUser.password);
addUser(&userList, newUser);
saveUsersToFile(userList, "users.txt");
printf("注册成功!\n\n");
} else if (choice == 2) {
char username[MAX_USERNAME_LENGTH];
char password[MAX_PASSWORD_LENGTH];
printf("请输入用户名: ");
scanf("%s", username);
printf("请输入密码: ");
scanf("%s", password);
if (checkCredentials(userList, username, password)) {
printf("登录成功!\n\n");
} else {
printf("用户名或密码错误!\n\n");
}
}
} while (choice != 3);
// 释放内存并保存用户列表到文件
freeUserList(userList);
saveUsersToFile(userList, "users.txt");
return 0;
}
```
这段代码使用了指针、结构体、文件操作和链表等知识,实现了一个简单的游戏注册登录功能。用户可以选择注册新账号或登录已有账号,用户名和密码会保存在一个链表中,并可以将用户列表保存到文件中。