十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可以定义两个字符数组;
创新互联公司是一家专业提供南京企业网站建设,专注与成都网站设计、成都网站建设、HTML5、小程序制作等业务。10年已为南京众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
一个存放正确密码;
另一个数组内的内容由用户输入;
调用strcmp函数,若返回值为0则说明两者完全相等;
列子:
char a[10]="4488" //保存正确密码
char b[10];
gets(b) //用户输入
if(strcmp(a,b)==0)
printf(" 匹配成功 ");
else
printf("匹配失败");
更多追问追答
追问
#include
void main()
{
char a[10]="8844";
char b[10];
gets(b)
if(strcmp(a,b)==0)
printf("yes");
else
printf("no");
getch();
#include stdio.h#ifndef _WIN32 //Linux platform
#include termio.h
#ifndef STDIN_FILENO
#define STDIN_FILENO 0
#endifint getch(void)
{
struct termios tm, tm_old;
int fd = STDIN_FILENO, c;
if(tcgetattr(fd, tm) 0)
return -1;
tm_old = tm;
cfmakeraw(tm);
if(tcsetattr(fd, TCSANOW, tm) 0)
return -1;
c = fgetc(stdin);
if(tcsetattr(fd, TCSANOW, tm_old) 0)
return -1;
return c;
}#else //WIN32 platform
#include conio.h
#endif
#define MAX_LEN 8
#define BACKSPACE 8
#define ENTER 13
#define ALARM 7char *getPasswd(const char *prompt)
{
int i=0, ch;
static char p[MAX_LEN+1]="";
printf("%s", prompt);
while((ch = getch())!= -1 ch != ENTER)
{
if(i == MAX_LEN ch != BACKSPACE)
{
putchar(ALARM);
continue;
}
if(ch == BACKSPACE)
{
if(i==0)
{
putchar(ALARM);
continue;
}
i--;
putchar(BACKSPACE);
putchar(' ');
putchar(BACKSPACE);
}
else
{
p[i] = ch;
putchar('*');
i++;
}
} if(ch == -1)
{
while(i != -1)
{
p[i--] = '\0';
}
return NULL;
}
p[i]='\0';
printf("\n");
return p;
}
int main()
{
char *pw = getPasswd("passwd:");
puts(pw);
puts("clearing the static buffer with 0 ...");
while(*pw)
{
*pw++=0;
}
pw=NULL; return 0;
}
conio.h不是c标准头文件,建议不要用这个头文件。把这个头文件删掉。
将读入密码那行的函数改用gets
gets(input_pass);
另外为了避免bug,input_pass最好弄大一点。
C语言特点
基本特性
C++语言代码
1、高级语言:它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。 [10]
2、结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 [10]
4、代码级别的跨平台:由于标准的存在,使得几乎同样的C代码可用于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要进行硬件操作的场合,优于其它高级语言。 [10]
5、使用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。 [11]
特有特点
C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
不同的变量类型可以用结构体(struct)组合在一起。
只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。
部份的变量类型可以转换,例如整型和字符型变量。
通过指针(pointer),C语言可以容易的对存储器进行低级控制。
预编译处理(preprocessor)让C语言的编译更具有弹性。
这个相当简单。
举个例子:
scanf("%s",password);
if(password == "******")
function_admin();
else
function_user();
后面的function_admin和function_user就是主函数,里面包含着你需要做的程序。
想能修改密码,就把密码保存在本地,就行了。
1,楼上说得正确
printf("输出文本文件:");
// 这句后面增加:
while ((c=getchar())!='\n' c!=EOF );
//目的是清空输入缓冲区。
2,加密算法是正确的
int op,i;
char c,outcome[30];
printf("请输入操作要求:(0为加密,!0为解密):\n");
scanf("%d",op);
printf("请输入文本文件:\n");
i=0;
printf("输出文本文件:");
while ((c=getchar())!='\n' c!=EOF );
while((c=getchar())!='\n')
{
if(op)
outcome[i]=decrpt(c);
else
outcome[i]=encrpt(c);
printf("%c",outcome[i]);
i++;
}
printf("\n");
//while((c=getchar())!='\n')
char a[27] = "abcdefghijklmnopqrstuvwxyz";
char A[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for(int i = 0; i 27; i++)
{
printf("the old char is [%c]", a[i]);
printf("--- the encrpt char is [%c] \n", encrpt(a[i]));
}
for(int i = 0; i 27; i++)
{
printf("the old char is [%c]", A[i]);
printf("--- the encrpt char is [%c] \n", encrpt(A[i]));
}
printf("\n");
getchar();