当我来自success()
函数时,我不需要重新设置,0
但是当我在同一个函数中循环序列时,我必须使用它的大小将 psswrd 的内存设置回 0memset(psswrd,0,sizeof(psswrd));
那么它有什么区别当我来自另一个函数时,没有 memset 可以工作吗?
在其他用户对我的代码发表评论后(感谢批评,我从中吸取了教训),我使用新循环对其进行了修改,我的问题现在通过这段代码是无敌的,所以我的一个新问题是为什么当我从另一个功能success()
,例如,我不需要将它的内存设置回0
? 由于声明,它是否会自动设置回其默认初始化?
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#include <process.h>
success(){
clrscr();
printf("Press Any Key to Go Back and Login ");
getch();
return 0;
}
int cnt;
void login(){
char ch,
mypass[]="thepass",
psswrd[256]={0};
do{
cnt=NULL;
memset(psswrd,0,sizeof(psswrd));
clrscr();
printf("Enter Password: ");
do{
ch=getch();
if( isprint(ch) ){
psswrd[ cnt++ ] = ch;
printf("%c", ch);
}
else
if(ch==8 && cnt){
psswrd[ cnt-- ] = '\0';
printf("%s", "\b \b");
}
}
while(ch!=13);
}
while(strcmp(psswrd,mypass));
}
void main(){
do{
login();
success();
}
while(!success());
}