怎样消除因按回车键被scanf_s指令当做字符放在数组中的错误
#include<stdio.h>void main()
{
int c = 0;
char cLine[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char cAimline = "0000";
s: printf("请输入您需要加密的密码:\n");
for (c=0;c<7;c++)
{
scanf_s("%c",&cAimline);
if ((cAimline<'A') || (cAimline>'Z'))
{
printf("你输入的字符有错误\n");
goto s;
}
}
for (c=0;c<7;c++)
{
if ((cAimline<'A') || (cAimline>'Z'))
{
printf("你输入的第%d字符有错误\n",c+1);
}
}
for (c = 0; c < 7; c++)
{
if ((cAimline != 'Y') && (cAimline != 'Z'))
{
cAimline = cAimline + 2;
}
else
{
if (cAimline = 'Y')
{
cAimline = 'A';
}
else
{
cAimline = 'B';
}
}
}
printf("您获得的密令如下:\n");
for (c = 0; c < 7; c++)
{
printf("%c",cAimline);
}
printf("\n");
} 你是想要输入8位密码,然后把它翻译为向前两位吧~
A变C,B变D......Y变A,Z变B~
#include<stdio.h>
void main()
{
int c = 0;
char cLine[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";//这句话没引用过...可以删
char cAimline = "0000"; //要初始化直接"0",后面数组的数,系统直接默认0
s: printf("请输入您需要加密的密码:\n");
for (c=0;c<7;c++) //你要8位的密码,那7就改成8,或者c<=7
{
scanf_s("%c",&cAimline);//直接用scanf
if ((cAimline<'A') || (cAimline>'Z'))
{
printf("你输入的字符有错误\n");
goto s;
}
}
for (c=0;c<7;c++) //这句也没用,前面的循环语句已经确定了没有错误才接着运行这句循环语句,所以这句没用了
{
if ((cAimline<'A') || (cAimline>'Z'))
{
printf("你输入的第%d字符有错误\n",c+1);
}
}
for (c = 0; c < 7; c++) //你要8位的密码,那7就改成8,或者c<=7
{
if ((cAimline != 'Y') && (cAimline != 'Z'))
{
cAimline = cAimline + 2;
}
else
{
if (cAimline = 'Y')
{
cAimline = 'A';
}
else
{
cAimline = 'B';
}
}
}
printf("您获得的密令如下:\n");
for (c = 0; c < 7; c++) //你要8位的密码,那7就改成8,或者c<=7
{
printf("%c",cAimline);
}
printf("\n");
}
scanf_s("%c",&cAimline);改为 scanf_s("%c",&cAimline,c);
你试试 第三个参数是数组的缓冲区 不好意思,我弄错了
scanf_s("%c",&cAimline);
应改为 scanf_s("%c",&cAimline,8);
你试试,
很抱歉,新手初来乍到,犯错误了,最后一次改正
scanf_s("%c",&cAimline);
应改为 scanf_s("%c",&cAimline,7); laoniyouxi123 发表于 2016-3-17 11:34
很抱歉,新手初来乍到,犯错误了,最后一次改正
scanf_s("%c",&cAimline);
应改为 scanf_s("%c",&cA ...
问题解决了,能回答一下为什么是7而不是8吗 这说明你的数组基础没过关
char cAimline = "0000";
你使用该语句开辟了8个数组元素,即 cAimline='0', cAimline='0',........ cAimline='0'
for (c=0;c<7;c++) //你要8位的密码,那7就改成8,或者c<=7
而这个语句是从 0 开始的,,0到6,总共就是7个数,所以是7
{:10_257:}
页:
[1]