if 语句被忽略了 运行不到我的目的

下文中的第一个if 语句怎么跑不出来,直接跳到了末尾的else

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//输入密码确认
int main()
{
char get[20] = {0};
char get2[20] = {0};
int ch = 0;
printf("请输入您的六位数密码:\n");
scanf("%s", get);
printf("请再次确认您的六位数密码:\n");
scanf("%s", get2);
if (get == get2)
{
printf("请输入“Y”确认此次操作!\n");
ch = getchar();
if (ch == 'Y')
printf("确认成功!已完成操作!");
}
else
printf("您两次的密码不正确!请重新启动!");
return 0;
}

请输入您的六位数密码:

123456
请再次确认您的六位数密码:
123456
您两次的密码不正确!请重新启动!

改了数组大小[6] 发现更错了 报错 Run-Time Check Failure #2 - Stack around the variable ‘get’ was corrupted.

修改如下,除了字符串比较处理修改外,在输入Y字符串要增加先fflush(stdin)清空输入缓冲区

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <string.h>
//输入密码确认
int main()
{
char get[20] = {0};
char get2[20] = {0};
int ch = 0;
printf("请输入您的六位数密码:\n");
scanf("%s", get);
printf("请再次确认您的六位数密码:\n");
scanf("%s", get2);
if (strcmp(get,get2)==0)
{
printf("请输入“Y”确认此次操作!\n");
fflush(stdin);
ch = getchar();
if (ch == 'Y')
printf("确认成功!已完成操作!");
}
else
printf("您两次的密码不正确!请重新启动!");
return 0;
}

判断字符串相等不能用==,需要用:

#include<string.h>
strcmp(str1, str2);   //上一行是 头文件,这一行比较两个字符串str1和str2是否相等,相等就返回0

并且,你读入ch之前,需要先将缓冲区的换行符读出来,你的代码修改为(注意注释):

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <string.h>   //注意添加头文件
//输入密码确认
int main()
{
    char get[20] = {0};
    char get2[20] = {0};
    int ch = 0;
    printf("请输入您的六位数密码:\n");
    scanf("%s", get);
    printf("请再次确认您的六位数密码:\n");
    scanf("%s", get2);
    if (strcmp(get, get2)==0)   //等于0表示两者相等
    {
        printf("请输入“Y”确认此次操作!\n");
        ch = getchar();   //第一个getchar会读取你输入get2时的换行符(回车)
        ch = getchar();
        if (ch == 'Y')
            printf("确认成功!已完成操作!");
    } else
        printf("您两次的密码不正确!请重新启动!");
    return 0;
}

img

字符串的比较不是用==是用strcmp()函数。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <string.h>
//输入密码确认
int main()
{
char get[20] = {0};
char get2[20] = {0};
int ch = 0;
printf("请输入您的六位数密码:\n");
scanf("%s", get);
printf("请再次确认您的六位数密码:\n");
scanf("%s", get2);
if (strcmp(get,get2)==0)
{
printf("请输入“Y”确认此次操作!\n");
getchar();//消除缓存 
ch = getchar();
if (ch == 'Y')
printf("确认成功!已完成操作!");
}
else
printf("您两次的密码不正确!请重新启动!");
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632