模拟了一个用户登录的情景,并且只能登录三次!通过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;
}
代码中定义的password只有一个字符长度,所以后面获取密码时数组越界,可以把数组定义为一个合适的长度;
然后使用scanf()获取密码字符串时,password前面的&取址符去掉,因为password已经是一个地址了。
修改如下:
参考链接:
#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;
}
实际开发中,除了编译器是必备的工具,我们往往还需要很多其他辅助软件,例如:
这些工具通常被打包到一起,统一发布和安装,例如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;
}