用c语言把字符串加密,包括字母和数字,向后偏移三位,需要运用到函数。帮忙改一下错啊。。
输出用%s的话,用不着0到10循环,一个printf("%s",a);就行了
%s表示输入字符串,那么a[10]只能接收9个字符。因为还有一个隐含的字符串结束符。
偏移那段不能0到10循环,而应该判断是否已处理到了字符串结尾。
#include
main()
{
char a[10];
int i ;
printf("input 9 chars:
");
scanf("%s",a);
for(i=0;a[i]!='\0';i++)
{
if('x'<=a[i]&&a[i]<='z'||'X'<=a[i]&&a[i]<='Z')
a[i]-=23;
else
a[i]+=3;
}
printf("%s",a);
}
while(*a){
if(((*a>='a')&&(*a='A')&&(*a<='Z')))
*a=*a+2;
if((*a=='Y')||(*a=='y')||(*a=='Z')||(*a=='z'))
*a=*a-('y'-'a');
if((*a>='0')&&(*a<='9'))*a='0'+'9'-*a;
a++;
}
这里出了问题,执行完第一个if之后,*a=z,再次执行下面那个if,*a=b,所以错误了
void sec(char str[]);
void main()
{
char str[10];
int i=0;
printf("input 10 chars:\n");
for(i=0;i<10;i++)
scanf("%c",&str[i]);//<————这里输入的时候你写的不对!
sec(str);
for(i=0;i<10;i++)
printf("%c",str[i]);
}
void sec(char str[])
{
int i;
for(i=0;str[i]!='\0';i++)
{
char x=str[i];
if((x>='a'&&x<='z')||(x>='A'&&x<='Z')||(x>='0'&&x<='9'))
x=x+3;
str[i]=x;//<————————这里要把转换完的x再赋给str[i]
}
}
把sec改成
void sec(char **str){
int i;
for(i=0;*str[i]!='\0';i++)
{
char x=*str[i];
if((x>='a'&&x<='z')||(x>='A'&&x<='Z')||(x>='0'&&x<='9'))
{
x=x+3;
*str[i] = x;
}
}
}
用c语言把字符串加密,包括字母和数字,向后偏移三位,需要运用到函数。帮...
x=x+3;str[i]=x;\/\/<———这里要把转换完的x再赋给str[i]} }
c语言文件加密,用后三个字母代替
include <stdio.h>#include <string.h>\/\/默认输入字母和数字,对其余非法字符未判断int main(void){char buf[100] = {0};char result[100] = {0};int length = 0;scanf("%s",buf);length = strlen(buf);int i=0,j=0;for(i=0;i<length;i++){if(buf[i] <= '9' && buf[i]...
用C语言加密 字母信息加密字母按字母表,进行对调,大小写不变(a-z...
void jiami(char namea[256]){ FILE *fp_jiami,*fp_file2;char c;fp_jiami=fopen(namea,"rb");fp_file2=fopen("file2.plg","wb");while(EOF!=(fscanf(fp_jiami,"%c",&c))){ if((c>='A'&&c<='Z')||(c>='a'&&c<='z')){ c=c+N;if (!((c>='A'&&c<='Z')...
字符串加密
在C语言中,字符串加密是一种常见的数据保护技术,本文将展示两个函数replace和disorder,用于实现字符串的加密操作。首先,replace函数接收一个字符串src和一个整数n,通过循环迭代,每个字符会按照n的值进行位移,如果字符超过'Z',则循环回字母表的开头。这样,即使知道n的值,也难以直接推断出加密后的...
如何用c语言编:输入一字符串,将其中所有的大写英文字母+3,小写英文字...
char c,b;printf("请输入字符:\\n");while((c=getchar())!='\\n'){ if(c>='a'&&c<='z')b=c-3;else if(c>='A'&&c<='Z')b=c+3;printf("%c",b);} printf("\\n");} 程序已经运行过了,大写字母的后三位和小写字母的前三位因为运算后已经超过了字母的范围,输出的是别的...
C语言:输入一串字符(字符数小于 70)和正整数k,将其中的字母加密,并...
参考:include <stdio.h>#include <ctype.h>int main(){ char str[70]; int k, i, N; scanf ("%d", &N); while (N--){ getchar(); scanf ("%s%d", str, &k); k %= 26; for (i = 0; str[i] != '\\0'; ++i){ if (isupper(str[i])...
C语言实现将字符串进行加密处理,每个字符的加密规则是,将其转换为对应...
输入的是英文字符的话,直接加3就可以,但是如果是中文字符的话,如果直接高位和地位加3也可以,但是解密的时候就有一个不确定的存在,因为中文字符的ascii编码是有0xfe这样的存在,加上3的话就到时候还原就变得不确定。所以如果是中文字符加密的话,应该把两个ascii码转合并为两个字节无符号类型,然后再...
C语言 输入字符串输出对应字母的ASCII编码 加密
char pass[101];int main(){ int i;char s[101],key[101];puts("设定密码:");scanf("%s",pass);puts("输入源字符串:");scanf("%s",s);puts("输入密码:");scanf("%s",key);while(strcmp(pass,key)){ \/*for(i=0;i<strlen(s);i++)printf("%d ",s[i]+4);puts("");...
c语言题 不要用指针不用c++ 【问题描述】现要对一个由大写字母组成的字...
j!=t;++j){ int temp=arr[j];temp+=k;if(temp>'Z')temp-=26;arr[j]=temp;} for(int j=0;j!=t;++j){ arr1[j]=arr[tran_seq[j]-1];} arr1[t]='\\0';::printf("第%d个字符串加密后为:\\n%s\\n",i+1,&arr1);t=0;} ::getchar();::getchar();return 0;} ...
恺撒(caesar)密码如何用C语言编写,要求是加密和解密都有
include <string.h> define MAXSIZE 81 int main(){ char str[MAXSIZE];int i;int offset;int n;printf("请输入要加密的字符串:"); \/\/最大输入个数是80个字符 gets(str);printf("请输入要偏移量:"); \/\/若将a变为b,则偏移量为1,以此类推,偏移量在1-25之间 scanf("%d%*c", ...