帮我优化代码#include <stdio.h> #include <stdlib.h> #include <string.h> #define BLUE "\033[34m" #define CYAN "\033[36m" #define GREEN "\033[32m" #define RED "\033[31m" #define RESET "\033[0m" #define YELLOW "\033[33m" const char* logo = " ____ __\n / __ )____ _/ /_____ _\n / __ / __ `/ __/ __ `/ \n / /_/ / /_/ / /_/ /_/ / \n/_____/\\__,_/\\__/\\__,_/ \n"; const char* welcome = "欢迎使用模拟 QQ 登录界面\n"; const char* tip_user = "请输入用户名:"; const char* tip_pwd = "请输入密码:"; const char* success = "登录成功!\n"; const char* failure = "用户名或密码错误,登录失败!\n"; int main() { char username[20], password[20], buffer[256]; printf(CYAN "%s" RESET, logo); printf(BLUE "%s" RESET, welcome); printf(YELLOW "%s" RESET, tip_user); fgets(buffer, sizeof(buffer), stdin); sscanf(buffer, "%s", username); printf(YELLOW "%s" RESET, tip_pwd); fgets(buffer, sizeof(buffer), stdin); sscanf(buffer, "%s", password); if (strcmp(username, "qquser") == 0 && strcmp(password, "qqpassword") == 0) { printf(GREEN "%s" RESET, success); } else { printf(RED "%s" RESET, failure); } return 0; }
时间: 2023-07-13 10:09:00 浏览: 63
你的代码已经很简洁了,但是可以进行一些小优化:
1. 定义字符串常量时,可以使用 const char[] 来代替 const char*,这样更加安全。
2. 可以使用 fgets() 函数来获取用户输入,因为它可以避免缓冲区溢出的问题。
3. 在读取用户输入时,可以使用 sscanf() 函数来避免输入格式的错误。
4. 可以使用 strcmp() 函数来比较字符串是否相等,这样更加简洁。
下面是优化后的代码:
```c
#include <stdio.h>
#include <string.h>
#define BLUE "\033[34m"
#define CYAN "\033[36m"
#define GREEN "\033[32m"
#define RED "\033[31m"
#define RESET "\033[0m"
#define YELLOW "\033[33m"
const char logo[] =
" ____ __\n"
" / __ )____ _/ /_____ _\n"
" / __ / __ `/ __/ __ `/ \n"
" / /_/ / /_/ / /_/ /_/ / \n"
"/_____/\\__,_/\\__/\\__,_/ \n";
const char welcome[] = "欢迎使用模拟 QQ 登录界面\n";
const char tip_user[] = "请输入用户名:";
const char tip_pwd[] = "请输入密码:";
const char success[] = "登录成功!\n";
const char failure[] = "用户名或密码错误,登录失败!\n";
int main() {
char username[20], password[20], buffer[256];
printf(CYAN "%s" RESET, logo);
printf(BLUE "%s" RESET, welcome);
printf(YELLOW "%s" RESET, tip_user);
fgets(buffer, sizeof(buffer), stdin);
sscanf(buffer, "%s", username);
printf(YELLOW "%s" RESET, tip_pwd);
fgets(buffer, sizeof(buffer), stdin);
sscanf(buffer, "%s", password);
if (strcmp(username, "qquser") == 0 && strcmp(password, "qqpassword") == 0) {
printf(GREEN "%s" RESET, success);
} else {
printf(RED "%s" RESET, failure);
}
return 0;
}
```