C 替换密码-修改字符串的问题
由于替换第33行上的字符时出现问题,尝试运行时以下代码被中断。我是否错误地替换了字符串中的字符 该代码设计用于加密*cat字符串中的小写字符。代码2中的每个字符都“映射”到代码1中相同位置的字符。*cat中的小写字符替换为code2中的替换字符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
//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");