/*
编写函数:
void encrypt( char *data, char const *key );
它使用前题prepear_key 函数所产生的密钥对data 中的字符进行加密.
data 中的非字母不做修改, 但字母字符则使用密钥所提供的编码过的字符一一取代源字符. 字母字符的大小写状态应该保留.
*/
/*
* 遍历data, 直到遇到NUL字符
* 如果data 中某个字符是大写字母, 先在密钥中寻找大写字母的小写形式对应的小写字母, 减去32, 得到的就是加密后的大写字母, 并赋值给原字符
*
* 如果data 中某个字符是小写字母, 在密钥中寻找其对应的加密后的字母, 并赋值给原字符
*
* 如果data 中某个字符既不是大写字母, 又不是小写字母, 不做更改
*/
void encrypt( char *data, char const *key )
{
for( ; *data != '\0'; ++data )
{
if( *data >= 'A' && *data <= 'Z' )
{
*data = key[*data - 'A'] - 32;
}
else if( *data >= 'a' && *data <= 'z' )
{
*data = key[*data - 'a'];
}
}
return;
}
#include <stdio.h>
int main( void )
{
char data_1[] = "ATTACK AT DAWN";
char *key = "trailbzescdfghjkmnopquvwxy";
printf( "密钥: %s\n\n", key );
printf( "加密前data: %s\n", data_1 );
encrypt( data_1, key );
printf("加密后data: %s\n\n", data_1 );
char data_2[] = "All animals are equal, but some animals are more equal than others!";
printf( "加密前data: %s\n", data_2 );
encrypt( data_2, key );
printf( "加密后data: %s\n\n", data_2 );
return 0;
}
程序运行结果: