我正在开发一种凯撒密码之类的程序来亲自动手,但我坚持使用以下代码:
char * encrypt(char *input) {
int length = strlen(input);
char *encrypted;
encrypted = malloc(length+1);
encrypted[0] = 0;
int i;
for(i=0; i < length; i++) {
printf("%c\n", input[i]);
if (i>0) {
encrypted[i] = input[i];
}
}
encrypted[length] = '\0';
printf("Encrypted: %s\n", encrypted);
return encrypted;
}
现在我只是想弄清楚为什么我无法为字符复制输入字符。末尾的加密字符串显示为空。然而 char
的 printf
语句会产生正确的值。
代码可能有什么问题?
最佳答案
您没有复制字符串的第一个字符(位于索引 0 处)。您确实将该字符设置为 0 (NUL),因此当您将 encrypted
打印为字符串时,看起来它的长度为零。
删除if (i>0)
测试并无条件复制字符。您还可以删除 encrypted[0] = 0;
行,因为您将使用字符串的第一个字符覆盖它。
关于在C中复制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45583940/