新手求助
#include<stdio.h>#include<conio.h>
extern int F();
extern int G();
extern int H(char x, char y);
extern char A[];
extern int B[];
extern int C[];
int main()
{
Doop: int a, b;
printf("请选择(相应的数字);\n");
printf("1.设定密码;\n");
printf("2.验证密码;\n");
scanf_s("%d", &a);
if (a == 1)
{
b = F();
Loop: if (b == 1)
{
printf("两次输入不同;请重新输入;");
goto Loop;
}
printf("设定成功;\n");
}
else if (a == 2)
{
Soop: b = G();
if (b == 1)
{
printf("输入错误;请重新输入;");
goto Soop;
}
printf("输入正确");
}
else
{
printf("选择错误请重新选择;");
goto Doop;
}
}
int F()
{
printf("请设定密码:\n");
int i,o;
for (i = 0; i < 11; i++)//第一次输入密码
{
scanf_s("%c",A);//获取字符
if (A = 13) break;//输入回车键跳出循环
printf("*");
}
printf("请再次输入密码:\n");
for (i = 0; i < 11; i++)//再次输入密码
{
scanf_s("%c",&B);//获取字符
if (B = 13) break;//输入回车键跳出循环
printf("*");
}
for (i = 0; i < 11; i++)
{
o = H(A, B);//判断两次输入是否相等;
if(o == 1) return 1;//不相等时的返回值;
}
return 0;
}
int G()
{
printf("请输入密码");
int i,o;
for (i = 0; i < 11; i++)//
{
scanf_s("%c", &C);//获取字符
if (C = 13) break;//输入回车键跳出循环
printf("*");
}
for (i = 0; i < 11; i++)
{
o = H(A, C);
if (o == 1) return 1;
}
return 0;
}
int H(char x,char y)
{
int i;
for (i = 0; i < 11; i++)
{
if (x != y) return 1;
}
return 0;
}
求告知我哪错了。。。我就是运行不了 #include<stdio.h>
#include<conio.h>
extern int F();
extern int G();
extern int H(char x, char y);
//extern char A[];
//extern int B[];
//extern int C[];
char A = {0}; // MODIFY BY n0noper NOTE:这里你只给了这一个文件,我们没法用,方便调试所以改了
char B = {0};
char C = {0};
int main()
{
Doop: int a, b;
printf("请选择(相应的数字);\n");
printf("1.设定密码;\n");
printf("2.验证密码;\n");
scanf_s("%d", &a);
if (a == 1)
{
Loop: b = F();
if (b == 1) // MODIFY BY n0noper NOTE: Loop标识上移
{
printf("两次输入不同;请重新输入;");
goto Loop;
}
printf("设定成功;\n");
}
else if (a == 2)
{
Soop: b = G();
if (b == 1)
{
printf("输入错误;请重新输入;");
goto Soop;
}
printf("输入正确");
}
else
{
printf("选择错误请重新选择;");
goto Doop;
}
}
int F()
{
printf("请设定密码:\n");
fflush(stdin); // ADD BY n0noper NOTE: 清除输入缓存,防止上次输入结果的影响
int i,o;
for (i = 0; i < 11; i++)//第一次输入密码
{
A = (char)getch(); // scanf_s("%c", &A);//获取字符 // MODIFY BY n0noper NOTE:&A -> A
if (13 == A) break; // if (A = 13) break; //输入回车键跳出循环 // MODIFY BY n0noper NOTE:下次注意!
printf("*");
}
printf("请再次输入密码:\n");
fflush(stdin); // ADD BY n0noper NOTE: 清除输入缓存,防止上次输入结果的影响
for (i = 0; i < 11; i++)//再次输入密码
{
B = (char)getch(); // scanf_s("%c",&B);//获取字符 // MODIFY BY n0noper NOTE:scanf不会自动停止
if (13 == B) break; // if (B = 13) break;//输入回车键跳出循环 // MODIFY BY n0noper NOTE:下次注意!
printf("*");
}
for (i = 0; i < 11; i++)
{
o = H(A, B);//判断两次输入是否相等;
if(o == 1) return 1;//不相等时的返回值;
}
return 0;
}
int G()
{
printf("请输入密码:");
fflush(stdin); // ADD BY n0noper NOTE: 清除输入缓存,防止上次输入结果的影响
int i,o;
for (i = 0; i < 11; i++)//
{
C = (char)getch(); // scanf_s("%c", &C);//获取字符 // MODIFY BY n0noper
if (C = 13) break;//输入回车键跳出循环
printf("*");
}
for (i = 0; i < 11; i++)
{
o = H(A, C);
if (o == 1) return 1;
}
return 0;
}
int H(char x,char y)
{
int i;
// for (i = 0; i < 11; i++) // NOTE:这个循环不要闹
{
if (x != y) return 1;
}
return 0;
}
// 有什么问题,再讨论。
n0noper 发表于 2016-3-7 10:05
谢谢。。。不过还是有错误。。我用vs2015编译。。有三个错误。。。
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4996 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _getch. See online help for details. ConsoleApplication2 c:\users\administrator\desktop\新建文件夹\consoleapplication2\consoleapplication2\consoleapplication2.cpp 61
n0noper 发表于 2016-3-7 10:05
//谢谢。。。不过还是有错误。。我用vs2015编译。。有三个错误。。。
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4996 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _getch. See online help for details. ConsoleApplication2 c:\users\administrator\desktop\新建文件夹\consoleapplication2\consoleapplication2\consoleapplication2.cpp 61
//什么原因了? qq738320472 发表于 2016-3-7 12:58
//谢谢。。。不过还是有错误。。我用vs2015编译。。有三个错误。。。
严重性 代码 说明 ...
那就把getch()换成_getch(); 前边加上一个下划线,都是VS太智(liu)能(mang)··· 谢谢。 n0noper 发表于 2016-3-7 13:03
那就把getch()换成_getch(); 前边加上一个下划线,都是VS太智(liu)能(mang)···
太感谢了
n0noper 发表于 2016-3-7 13:03
那就把getch()换成_getch(); 前边加上一个下划线,都是VS太智(liu)能(mang)···
A = (char)getch(); // scanf_s("%c", &A);//大神。这两个区别在哪? qq738320472 发表于 2016-3-7 18:34
A = (char)getch(); // scanf_s("%c", &A);//大神。这两个区别在哪?
_getch()只读取一个character,但是scanf_s就不一样了,它虽然只接受一个,但是你可以输入任意多个···
1. 使用_getch() -- 你输入的每一个字符都可以用*代替,因为它不回显(without echo),所以更方便;
2. 使用scanf_s() -- 你可以输入一大堆东西("aabbccdd")并且给你显示出来,但是他直接第一个('a') n0noper 发表于 2016-3-8 08:29
_getch()只读取一个character,但是scanf_s就不一样了,它虽然只接受一个,但是你可以输入任意多个··· ...
再次感谢。能运行了。不雅 n0noper 发表于 2016-3-8 08:29
_getch()只读取一个character,但是scanf_s就不一样了,它虽然只接受一个,但是你可以输入任意多个··· ...
大神。我还有个问题。如何让输入的密码。保存下来。让下一次可以调用? qq738320472 发表于 2016-3-9 08:37
大神。我还有个问题。如何让输入的密码。保存下来。让下一次可以调用?
要么,全局变量 - (这种方法只是在程序没关闭之前有用)
要么,写文件 - (写配置文件了,注册表了)
你既然想"下一次可以调用",肯定是写文件了。(C语言 - 文件操作)
尝试一下,有问题再讨论。
页:
[1]