1. C語言 字元串加密
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intmain(void)
{
charc[100];
intk;
intlen,i,temp;
scanf("%s",c);
scanf("%d",&k);
len=(int)strlen(c);
k=k%26;
for(i=0;i<len;i++)
{
if(c[i]>='a'&&c[i]<='z')
{
if(c[i]+k>'z')
{
temp='z'-c[i];
temp=k-temp-1;
c[i]='a'+temp;
}
else
{
c[i]+=k;
}
}
elseif(c[i]>='A'&&c[i]<='Z')
{
if(c[i]+k>'Z')
{
temp='Z'-c[i];
temp=k-temp-1;
c[i]='A'+temp;
}
else
{
c[i]+=k;
}
}
else
{
/*donothing*/
}
}
printf("%s ",c);
return0;
}
2. C語言字元串加密
問題不小,你表面用的是C
但是,好多地方不符合C的語法
,,比如:
for
(int
i=0;
str[i]
!=
'\0';
i++)
還有,就是你好像沒有弄清楚
,你要做什麼似的,有好多無用的東西,
就像你的函數里的,key
,雖然你提到key了,但是你根本沒有使用key,你只是使用45來進行加密,,還有就是一個文件
的大小,是不確定的,你用一個100個字元的字元串來存,有點那個不安全了,,如果稍長一點就會出問題,產生運行時錯誤。其實你這個加密和解密是一個可逆過程,用一個函數,就可以了,具體你想要的也不是太明白,就給你弄了一個簡單一點加密和解密程序
,輸入輸出不是同一個文件
,不知道是不是你想要的。
#include
#include
#include
void
Decrypt()
{
char
fname[FILENAME_MAX];
char
fname2[FILENAME_MAX];
FILE*
fp;
FILE*
fp1;
int
key;
char
c;
printf("輸入要加/解密文件的路徑:\n");
scanf("%s",
fname);
printf("請輸入密鑰:\n");
scanf("%d",&key);
strcpy(fname2,fname);
strcat(fname2,".txt");
if(
(fp
=
fopen(fname,"r+"))
==
NULL)
{
printf("error");
exit(1);
}
if(
(fp1
=
fopen(fname2,"w+"))
==
NULL)
{
printf("error");
exit(1);
}
while(
(c
=
fgetc(fp))
!=
EOF)
{
c
=
c^key;
fputc(c,fp1);
}
fcloseall();
}
int
main()
{
Decrypt();
return
0;
}
如果想看一些好一點的加密演算法
,我這里有一些,聯系我發給你
,,
3. c語言作業 :實現對輸入的字元加密,加密演算法為:原有字元往後+1。如:輸入how 則輸出ipx
#include<stdio.h>
intmain()
{inti;
chars[300];
gets(s);
for(i=0;s[i];i++)
s[i]++;
puts(s);
return0;
}
4. C語言 簡單對字母進行加密
1、在我們的編輯頁面輸入以下代碼。
5. c語言輸入一個字母咋樣給他加密輸出然後跳到這個字母的第五位呢
咨詢記錄 · 回答於2021-10-13
6. C語言怎麼加密字元
#include<stdio.h>
#include<string.h>
intmain()
{
charstr[]="00000",str2[]="00000",*p=str,*p2=str2;
printf("輸入5個字母:");
while(*p!=0)
{
scanf("%c",p);
if(*p=='
')
continue;
if(*p<'A'||(*p>'Z'&&*p<'a')||*p>'z')//輸入驗證,必須是字母
{
printf("只能輸入字母,請重新輸入
");
p=str;
p2=str2;
fflush(stdin);//輸入有錯重新輸入前清空緩沖區。fflush屬於c擴展函數,正常使用沒問題,如需在linuxggc上使用,考慮多次調用getchar函數來清空
}
else
{
*p2=(*p)+4;
if(*p2>90&&*p2<97)//大寫字母加4,最大位不超出
*p2='A'+(*p2-90)-1;
if(*p2>122)//小寫字母加4,最大位不超出
*p2='a'+(*p2-122)-1;
p2++;
p++;
}
}
printf("原字元串為:%s
加密後的字元串為:%s
",str,str2);
return0;
}
7. 下面程序實現如下功能:輸入一行字母將字母加密輸出("a"變成"c","b"變成"d", 一直到"z"變成"b")
代碼如下:
#include<stdio.h>
#include<string.h>
int main()
{
char a[50];
gets(a);
for(int i=0;i<strlen(a);i++)
{
if(a[i]>='a'&&a[i]<'z'||a[i]>='A'&&a[i]<'Z')
{
a[i]=a[i]+1;
}
else if(a[i]=='z'||a[i]=='Z')
{
a[i]+=1;
}
else
a[i]=a[i];
}
puts(a);
return 0;
}
(7)C語言實現字元加密輸出擴展閱讀
getchar()函數的作用是從計算機終端(一般為鍵盤)獲取一個無符號字元。getchar()函數只能接收一個字元,其函數值就是從輸入設備獲取到的字元。
getchar由宏實現:#define getchar() getc(stdin)。getchar有一個int型的返回值。當程序調用getchar時,程序就等著用戶按鍵。用戶輸入的字元被存放在鍵盤緩沖區中。直到用戶按回車為止。當用戶鍵入回車之後,getchar才開始從stdin流中每次讀入一個字元。
getchar函數的返回值是用戶輸入的字元的ASCII碼,若文件結尾則返回-1(EOF),且將用戶輸入的字元回顯到屏幕。如用戶在按回車之前輸入了不止一個字元,其他字元會保留在鍵盤緩存區中,等待後續getchar調用讀取。
也就是說,後續的getchar調用不會等待用戶按鍵,而直接讀取緩沖區中的字元,直到緩沖區中的字元讀完後,才等待用戶按鍵。
8. C語言對字元進行加密
if(e>='A'&&e<='W')//
e+=3;
elseif(e>='X'&&e<='Z')
e-=23;
else
{
...//donotencryptordosomethingelse
}
9. C語言字元加密輸出問題
親, 好了 採納給分吧
#include<stdio.h>
main()
{
//97 -122 a-z
//97-7=90 98-9=89 99-11=88 100-13=87 101-15=86... 122-57=65 字母和187
//65 -90 A-Z
//48 -57 0-9
char ch;
float num;
scanf("%c",&ch);
if (ch>='a' && ch<='z')
printf("%c\n",187-ch);
else if (ch>='A' && ch<='Z')
{
num =ch/2.0+0.5;
ch +=(int)num;
printf("%c\n",ch);
}
else if (ch>='0' && ch<='9')
printf("%c",ch+ch/10 );
else
printf("%c",ch);
}
有問題請追問 滿意記得採納
10. C語言如何進行字元加密
進行字元加密是很多種的。
數據加密的基本過程就是對原來為明文的文件或數據按某種演算法進行處理,使其成為不可讀的一段代碼為「密文」,使其只能在輸入相應的密鑰之後才能顯示出原容,通過這樣的途徑來達到保護數據不被非法人竊取、閱讀的目的。 該過程的逆過程為解密,即將該編碼信息轉化為其原來數據的過程。