Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 替换密码-修改字符串的问题_C_String_Encryption - Fatal编程技术网

C 替换密码-修改字符串的问题

C 替换密码-修改字符串的问题,c,string,encryption,C,String,Encryption,由于替换第33行上的字符时出现问题,尝试运行时以下代码被中断。我是否错误地替换了字符串中的字符 该代码设计用于加密*cat字符串中的小写字符。代码2中的每个字符都“映射”到代码1中相同位置的字符。*cat中的小写字符替换为code2中的替换字符 //Ben Adamson //v1.0 #include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> void

由于替换第33行上的字符时出现问题,尝试运行时以下代码被中断。我是否错误地替换了字符串中的字符

该代码设计用于加密*cat字符串中的小写字符。代码2中的每个字符都“映射”到代码1中相同位置的字符。*cat中的小写字符替换为code2中的替换字符

//Ben Adamson
//v1.0
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

void code(char *s);

int main()
{
    char *cat = "The cat sat";

    code(cat);

    _getch();
    return 0;
}

void code(char *s)
{
    char code1[] = "abcdefghijklmnopqrstuvwxyz";
    char code2[] = "bpduhijkaltxwmrzfoysvngeqc";
    char *letter;
    unsigned int i, letterpos;

    for(i=0; i<strlen(s); i++)
    {
        if(isalpha(s[i]) && islower(s[i]))
        {
            letter = strchr(code1, s[i]);
            letterpos = (int)(letter - code1);
            s[i] = code2[letterpos];
        }
    }
    printf("New string is %s", s);
}
//本·亚当森
//v1.0
#包括
#包括
#包括
#包括
无效代码(字符*s);
int main()
{
char*cat=“猫坐”;
代码(cat);
_getch();
返回0;
}
无效代码(字符*s)
{
字符代码1[]=“abcdefghijklmnopqrstuvwxyz”;
字符代码2[]=“bpduhijkaltxwmrzfoysvngeqc”;
字符*字母;
无符号整数i,字母pos;
对于(i=0;i
她的
cat
是只读的

s[i] = code2[letterpos];
如果需要写入内存,则需要分配内存

char *cat =  malloc(100);
更好的方法是:

char *cat = strdup("The cat sat");

我建议使用char*cat=strdup(“cat-sat”)
@klaslindbkäck是的,为了解决他的问题,分配内存将解决它。感谢Gopi和Klas-我考虑了你的建议,在使用Klas的行替换后,代码工作正常。注意-编译器抱怨strdup不受欢迎,所以我改用了strdup。@BenAdamson,只要使用
strdup
char *cat = strdup("The cat sat");