奇怪的问题^
下面的程序是验证密码的……
密码是 1234567 (输入的时候不会显示)
输入密码后有一句是测试输入的字符串的,
在Turbo C for windows 里可以运行,但是在VC里却不能运行……测试时显示的字符串跟输出的不一样……
高手帮我看看,怎么改?
不胜感激!
[code=C/C++]
#include <stdio.h>
void main(void)
{
int leftTimes=3,i;
char str_SD[7]= "1234567 ";
char str_temp[7],c;
printf( "\n\n\n "
"###############################################################################\n "
"## ##\n "
"## ##\n "
"## 欢 迎 使 用 本 系 统 ! ##\n "
"## ##\n "
"## ##\n "
"## ##\n "
"## ##\n "
"###############################################################################\n "
"\n\n ");
while(leftTimes--)
{
printf( "\t你还有%3d机会,请输入密码: ",leftTimes+1);
//gets(str_temp);
fflush(stdin);
i=0;
while ( i <7 && (c = getch())!=0x0D)//0x0D是输入回车
{
str_temp[i++]=c;
}//将输入字符串赋值给cmd数组
printf( "\n%s ",str_temp);//这句是测试时用来检查输入的字符串的
if( !strcmp(str_temp, str_SD) )
{
printf( "\n\n恭喜密码正确,可以使用! ");
system( "pause ");
return ;
}
else
{
printf( "\n\n密码错误!\a\n ");
continue;
}
}
printf( "\t\t你已连续3次输错错误的密码!\n\n "
"\t\t请检查你的密码,然后重新启动本程序\n\n "
"\t\t再见!\n\n ");
exit (0);
}
[/code]
[解决办法]
char str_SD[8]= "1234567 ";
[解决办法]
数组都越界了,免看
[解决办法]
#include <stdio.h> void main(void) { int leftTimes=3,i; char str_SD[8]="1234567"; //...char str_temp[7],c; printf( "\n\n\n " "###############################################################################\n " "## ##\n " "## ##\n " "## 欢 迎 使 用 本 系 统 ! ##\n " "## ##\n " "## ##\n " "## ##\n " "## ##\n " "###############################################################################\n " "\n\n "); while(leftTimes--) { printf( "\t你还有%3d机会,请输入密码: ",leftTimes+1); //gets(str_temp); fflush(stdin); i=0; while ( i <7 && (c = getchar())!=0x0D)//0x0D是输入回车 //...{ str_temp[i++]=c; }//将输入字符串赋值给cmd数组 printf( "\n%s ",str_temp);//这句是测试时用来检查输入的字符串的 if( !strcmp(str_temp, str_SD) ) { printf( "\n\n恭喜密码正确,可以使用! "); //system( "pause ");//... return 0;//...} else { printf( "\n\n密码错误!\a\n "); continue; } } printf( "\t\t你已连续3次输错错误的密码!\n\n " "\t\t请检查你的密码,然后重新启动本程序\n\n " "\t\t再见!\n\n "); exit (0); }
[解决办法]
输入赋值到数组后,要置字符串数组的结束标志.
#include<stdio.h> #include<conio.h>#include<string.h>void main(void) { int leftTimes=3,i; char str_SD[20]= "1234567"; char str_temp[20],c; printf( "\n\n\n " "###############################################################################\n " "####\n " "####\n " "## 欢 迎 使 用 本 系 统 ! ##\n " "####\n " "####\n " "####\n " "####\n " "###############################################################################\n " "\n\n "); while(leftTimes--) { printf( "\t你还有%3d机会,请输入密码: ",leftTimes+1); //gets(str_temp); fflush(stdin); i=0; while(i < 20-1 && (c=getchar())!='\n')//0x0D是输入回车 { str_temp[i++]=c; }//将输入字符串赋值给cmd数组 str_temp[i] = '\0'; //置字符串结束标志 printf( "\n%s ",str_temp);//这句是测试时用来检查输入的字符串的 if( !strcmp(str_temp, str_SD) ) { printf( "\n\n恭喜密码正确,可以使用! "); getch(); return; } else { printf( "\n\n密码错误!\a\n "); continue; } } printf( "\t\t你已连续3次输错错误的密码!\n\n " "\t\t请检查你的密码,然后重新启动本程序\n\n " "\t\t再见!\n\n "); // exit(0);}