C语言字符串比较问题?急用,急用
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
void main()
{
char mima[10]="123";
char mima2[10];
char cunmima[10];
printf("\n");
printf("\t\t\t*********************************\n");
printf("\t\t\t*********** 管理员登陆 **********\n");
printf("\t\t\t*********************************\n\n\n\n");
printf("\t\t请输入密码:");
while(mima2[10]=getch())
{
cunmima[10]=mima2[10];//存放密码
if(mima2[10]=='\r')break;
putchar('*');
}
if(strcmp(cunmima,mima)==0)//比较密码
{
printf("\n");
printf("\t\t\t*****************************\n");
printf("\t\t\t*********** 管理员 **********\n");
printf("\t\t\t*****************************\n\n\n\n");
printf("1.增加产品\t2.删除产品3.修改产品\t4.查询产品\t0.返回上一级");
}
else
{
printf("您输入的密码错误");
}
}
你帮我看看这段代码为什么输入正确密码,总是“提示您输入的密码错误”。
然后,还有一个问题,比如我输入密码时输入错误了一个,如何向后删除一个字符,光标向后退一个格,我说的不是删除表面显示,是真真正正的删除一个字符。谢谢你了,我过两天就用了,急呀。
我用的是VC6.0++ 但是我学的是C语言,刚学不到两个月,希望大家把代码写简单点,不然我看不懂,然后加上中文注释,我现在真是急呀,后天就要用这段代码,希望大家帮帮忙,我将万分感谢。
参考答案:把
while(mima2[10]=getch())
{
cunmima[10]=mima2[10];//存放密码
if(mima2[10]=='\r')break;
putchar('*');
}
改成
for(int i=0;i<10;i++)
{
mima2[0] = getch();
if(mima2=='\r')break;
cunmima[i] = mima2[0];
putchar('*');
}
就OK了
建议多做看点书多实践下,,写的代码看不得类
..
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
void main()
{
char mima[10]="123";
char mima2;
char cunmima[10] ="";
printf("\n");
printf("\t\t\t*********************************\n");
printf("\t\t\t*********** 管理员登陆 **********\n");
printf("\t\t\t*********************************\n\n\n\n");
printf("\t\t请输入密码:");
//这里 我们定义一个 i 变量储存当前密码输入栏的光标位置
//并且令i=0指向最开始的第一个位置
int i=0;
//循环体,当i<10时退出循环,因为密码数组最多最多只能存10个字
//符(你自己设定的)
while(i<10)
{
//从键盘读取一个字符,getch()函数返回的是int型,而
//mima2是字符型, 所以使用(char)强制类型转换
mima2 = (char)getch();
if(mima2=='\r')break;//如果读到的字符是回车键,则跳出循环,密码输入结束
if(mima2=='\b')//如果是退格键
{
if(i>0)//如果当前光标位置不是最开始的地方
{
putchar('\b');//屏幕往回退一格
putchar(' ');//输出一个空格键把当前位置的*擦除
putchar('\b');//回退一格到刚才那个空格的位置
i--;//光标位置变量自减1
}
}
else//读到的不是上面两种符号
{
cunmima[i] = mima2; //将cunmima[]数组第i个字符设置为刚读到的mima2
putchar('*');//在当前屏幕位置输出一个*
i++;//光标位置 + 1 }
}
cunmima[i] = '\0'; cunmima[]字符数组设置当前位置为结束标志
if(strcmp(cunmima,mima)==0)//比较密码
{
printf("\n");
printf("\t\t\t*****************************\n");
printf("\t\t\t*********** 管理员 **********\n");
printf("\t\t\t*****************************\n\n\n\n");
printf("1.增加产品\t2.删除产品3.修改产品\t4.查询产品\t0.返回上一级");
}
else
{
printf("您输入的密码错误");
}
}
这么写就OK了