#define _CRE_SECURE_NO_WARNINGS #include <stdio.h> #include<string.h> int main() { //int ch = 0; /*while ((ch = getchar() != EOF)) { putchar(ch); }*/ printf("请输入密码"); //ch = getchar(); char pass1[20] = { 0 }; char pass2[20] = { 0 }; int y = 0; scanf("%s", &pass1); printf("请确认密码"); printf("输入y继续,n不确认"); y = getchar(); if (y == 'y') { printf("接收确认"); scanf("%s", pass2); if (pass1 == &pass2) { printf("密码确认成功"); } else { printf("确认失败"); } } else { printf("不确认密码"); } return 0; }
时间: 2023-06-20 16:09:58 浏览: 61
duojikongzhi.rar_Unsigned_c++include <reg51>
这段代码存在一些问题,需要进行修改。
1. `#define _CRE_SECURE_NO_WARNINGS` 应该写成 `#define _CRT_SECURE_NO_WARNINGS`,这是为了避免编译器提示不安全的警告信息。
2. 在使用 `scanf` 函数输入字符串时,不需要使用 `&` 符号,因为数组名本身就是一个指向数组首元素的指针。
3. 在输入确认字符时,应该加上一个额外的 `getchar()`,因为之前输入密码时按下了回车键,回车键会留在输入缓冲区中,影响后续输入操作。
4. 判断两个字符串是否相等应该使用 `strcmp` 函数,而不是直接比较两个指针的值。
修改后的代码如下:
```c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main() {
printf("请输入密码:");
char pass1[20] = {0};
char pass2[20] = {0};
scanf("%s", pass1);
printf("请确认密码:");
printf("输入 y 继续,n 不确认\n");
int y = getchar();
if (y == 'y') {
getchar(); // 消耗掉回车键
printf("请输入确认密码:");
scanf("%s", pass2);
if (strcmp(pass1, pass2) == 0) {
printf("密码确认成功\n");
} else {
printf("确认失败\n");
}
} else {
printf("不确认密码\n");
}
return 0;
}
```
阅读全文