C语言加密程序基础练习

img


#include
void change(char *str)
{
    char *p=str;
    while (*p!='\0')
    {
        if (isupper(*p)) *p='A'+((*p+4)-'A')% 26;
        else *p='a'+((*p+4)-'a')% 26;
        p++;
    }
}
void insert (char *str1,char *str2)
{
    char *p=str1;
    char *q=str2;
    while(*p!='0')
    {
        *q=*p;
        q++;
        *q=' ';
        p++;
        q++;
    }
    *q=*p;
}
int main()
{
    char str[255],str1[255];
    while (gets(str))
    {
        change (str);
        insert (str,str1);
        printf("%s\n",str1);
    }
}

请问一下,为什么无法输出结果

回答:你的程序略微有些小问题,我给你修改了一下

img

#include <stdio.h>
#include <ctype.h>
#include <string.h>

void change(char* str)
{
    int length = strlen(str);
    for (int i = 0; i < length; i++)
    {
        if (str[i] >= 'a' && str[i] <= 'z')
        {
            if (str[i] + 4 > 'z')
            {
                str[i] = str[i] + 3 - 'z' + 'a';
            }
            else
            {
                str[i] = str[i] + 4;
            }
        }
        else if (str[i] >= 'A' && str[i] <= 'Z')
        {
            if (str[i] + 4 > 'Z')
            {
                str[i] = str[i] + 3 - 'Z' + 'A';
            }
            else
            {
                str[i] = str[i] + 4;
            }
        }
    }
    //printf("%s\n", str);
}

void insert(char* str1, char* str2)
{
    int length = strlen(str1);
    for (int i = 0; i < length; i++)
    {
        str2[2 * i] = str1[i];
        str2[2 * i + 1] = ' ';
    }
}

int main()
{
    char str[128] = {};
    while (scanf_s("%s", str, 128))
    {
        change(str);

        char str1[255] = {};
        insert(str, str1);
        printf("%s\n", str1);
    }
}

/*
Rainisfaillingallaround
wZxabY
*/