char溢出问题怎么解决
top啦它 2019-12-05 01:20:17 请问应该怎么改,下面代码还能用吗?
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#define N 100000
int main(void)
{
int i,n,t,a,b;
unsigned char d[N];
gets(d);
t = strlen(d);
char *u;u = d;
for(i = 0;i < t;i++)
{
if(*(u + i) >= '0'&&*(u + i) <= '9')
{
*(u + i) = (*(u + i) + 49);
}
}
scanf("%d",&b);
for(i = 0;i < t;i++)
{
*(u + i) = *(u + i) + b;
*(u + i) = fabs(*(u+i));
if(*(u + i) > 'z'&&*(u + i) <= 147)
{
*(u + i) = *(u + i) - 26;
}
}
for(a = 0;a < t;a++)
{
printf("%c",*(u + a));
}
return 0;
}
Description
Fresher学了C语言以后,发现自己的逻辑思维能力得到了很大的提高整个人都变得深沉了。他看到一行包含英文小写字母和数字的字符串,想着把字符串按照一定的规律进行变换,Fresher制定了如下规则:(1)将字符串中的数字加密为对应序号的英文字母,如数字0加密为字母a,数字1加密为字母b,以此类推;(2)第一次加密后的字符串进行二次加密,将字符串中每个字母c加一个序数k(k<26),变换公式:c=c+k。如果字母为z,则后一个字母是a。
Input
一个字符串和一个正整数
Output
一个加密后的字符串
Sample Input
ab0a
1
Sample Output
bcbb