读书人

奇怪的有关问题

发布时间: 2012-02-28 13:06:35 作者: rapoo

奇怪的问题^


下面的程序是验证密码的……
密码是 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 ";
[解决办法]
数组都越界了,免看
[解决办法]

C/C++ code
#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); } 


[解决办法]
输入赋值到数组后,要置字符串数组的结束标志.

C/C++ code
#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);} 

读书人网 >C语言

热点推荐