可以定義兩個(gè)字符數(shù)組;
創(chuàng)新互聯(lián)公司是一家專業(yè)提供南京企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、HTML5、小程序制作等業(yè)務(wù)。10年已為南京眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
一個(gè)存放正確密碼;
另一個(gè)數(shù)組內(nèi)的內(nèi)容由用戶輸入;
調(diào)用strcmp函數(shù),若返回值為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標(biāo)準(zhǔn)頭文件,建議不要用這個(gè)頭文件。把這個(gè)頭文件刪掉。
將讀入密碼那行的函數(shù)改用gets
gets(input_pass);
另外為了避免bug,input_pass最好弄大一點(diǎn)。
C語言特點(diǎn)
基本特性
C++語言代碼
1、高級(jí)語言:它是把高級(jí)語言的基本結(jié)構(gòu)和語句與低級(jí)語言的實(shí)用性結(jié)合起來的工作單元。?[10]
2、結(jié)構(gòu)式語言:結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C 語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。?[10]
4、代碼級(jí)別的跨平臺(tái):由于標(biāo)準(zhǔn)的存在,使得幾乎同樣的C代碼可用于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機(jī)型。C語言對(duì)編寫需要進(jìn)行硬件操作的場(chǎng)合,優(yōu)于其它高級(jí)語言。?[10]
5、使用指針:可以直接進(jìn)行靠近硬件的操作,但是C的指針操作不做保護(hù),也給它帶來了很多不安全的因素。C++在這方面做了改進(jìn),在保留了指針操作的同時(shí)又增強(qiáng)了安全性,受到了一些用戶的支持,但是,由于這些改進(jìn)增加語言的復(fù)雜度,也為另一部分所詬病。Java則吸取了C++的教訓(xùn),取消了指針操作,也取消了C++改進(jìn)中一些備受爭議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機(jī)中運(yùn)行,運(yùn)行效率低于C++/C。一般而言,C,C++,java被視為同一系的語言,它們長期占據(jù)著程序使用榜的前三名。?[11]
特有特點(diǎn)
C語言是一個(gè)有結(jié)構(gòu)化程序設(shè)計(jì)、具有變量作用域(variable scope)以及遞歸功能的過程式語言。
C語言傳遞參數(shù)均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
不同的變量類型可以用結(jié)構(gòu)體(struct)組合在一起。
只有32個(gè)保留字(reserved keywords),使變量、函數(shù)命名有更多彈性。
部份的變量類型可以轉(zhuǎn)換,例如整型和字符型變量。
通過指針(pointer),C語言可以容易的對(duì)存儲(chǔ)器進(jìn)行低級(jí)控制。
預(yù)編譯處理(preprocessor)讓C語言的編譯更具有彈性。
這個(gè)相當(dāng)簡單。
舉個(gè)例子:
scanf("%s",password);
if(password?==?"******")
function_admin();?
else
function_user();
后面的function_admin和function_user就是主函數(shù),里面包含著你需要做的程序。
想能修改密碼,就把密碼保存在本地,就行了。
1,樓上說得正確
printf("輸出文本文件:");
// 這句后面增加:
while ((c=getchar())!='\n' c!=EOF );
//目的是清空輸入緩沖區(qū)。
2,加密算法是正確的
int op,i;
char c,outcome[30];
printf("請(qǐng)輸入操作要求:(0為加密,!0為解密):\n");
scanf("%d",op);
printf("請(qǐng)輸入文本文件:\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();