但是总会弹出一个错误,如何解决?(标签-IDE|关键词-#include)

模拟了一个用户登录的情景,并且只能登录三次!通过C实现后可以运行,但是总会弹出一个错误。麻烦各位帮看看呢?
IDE是vs2010

#include <stdio.h>
#include <string.h>
int main()
{
    int i = 0;
    char password[] = {0};
    for(i = 0;i < 3;i++)
    {
        printf("请输入密码:>");
        scanf("%s",&password);
        if(strcmp(password,"123456") == 0)
        {
            printf("登录成功!\n");
            break;
        }
        else
        {
            printf("密码错误\n");
        }
    }
    if(i == 3)
    {
        printf("三次密码均错误,退出程序\n");
    }
    return 0;
}

img

代码中定义的password只有一个字符长度,所以后面获取密码时数组越界,可以把数组定义为一个合适的长度;

然后使用scanf()获取密码字符串时,password前面的&取址符去掉,因为password已经是一个地址了。

修改如下:

参考链接:


深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别 - 知乎 C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两… https://zhuanlan.zhihu.com/p/114161428


#include <stdio.h>
#include <string.h>
int main()
{
    int i = 0;
    // https://zhuanlan.zhihu.com/p/377633216
   // https://zhuanlan.zhihu.com/p/114161428 
    // 先前形式定义的password 只能存储一个字符,    
    // 所以导致获取的输入越界了,而导致了程序出现异常
    // 可以把password定义为一个合适长度的字符数组 
    char password[30]; 

    //printf("sizeof(password)=%d\n",sizeof(password));
    for(i = 0;i < 3;i++)
    {
        printf("请输入密码:>");
        // 然后这里获取字符串,password前面不需要加&,因为password已经是一个内存地址了 
        scanf("%s",password);
        if(strcmp(password,"123456") == 0)
        {
            printf("登录成功!\n");
            break;
        }
        else
        {
        //    printf("i=%d,password=%s,",i,password);
            printf("密码错误\n");
        }
    }
    if(i == 3)
    {
        printf("三次密码均错误,退出程序\n");
    }
    return 0;
}

img

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7784188
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言:什么是编译器?如何选择IDE??
  • 除此之外, 这篇博客: C语言学习(六)学习C语言前你要了解的知识!包括编译、IDE、C语言的标准等中的 (七)什么是IDE(集成开发环境)? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 实际开发中,除了编译器是必备的工具,我们往往还需要很多其他辅助软件,例如:

    • 编辑器:用来编写代码,并给代码着色,方便阅读
    • 代码提示器:输入部分代码,即可提示全部代码,加速代码编写
    • 调试器:观察程序的每个运行步骤,帮我我们发现程序的错误
    • 项目管理工具:对程序涉及的所有资源进行管理,包括源文件、图片、视频、第三方库等
    • 漂亮的界面:各种按钮、菜单、窗口等控件

    这些工具通常被打包到一起,统一发布和安装,例如Visual Studio、Dev C++、Xcode、Jetbrains Clion等,他们统称为集成开发环境(IDE,Integrated Development Environment)

    IDE就是一系列开发工具的组合套装。这就好比台式机,一个台式机的核心部件是主机,有了主机就能独立工作了,但是在我们购买台式机时,往往还要附带上显示器、键盘、鼠标等外围设备,因为只有主机太不方便了,必须有外设才能玩的爽。

供参考:

#include <stdio.h>
#include <string.h>
int main()
{
    int i = 0;
    char password[32] = {0};   //char password[] = {0};  修改
    for(i = 0;i < 3;i++)
    {
        printf("请输入密码:>");
        scanf("%s", password); //scanf("%s",&password);  修改
        if(strcmp(password,"123456") == 0)
        {
            printf("登录成功!\n");
            break;
        }
        else
        {
            printf("密码错误\n");
        }
    }
    if(i == 3)
    {
        printf("三次密码均错误,退出程序\n");
    }
    return 0;
}