在C中复制字符

标签 c arrays string pointers char

我正在开发一种凯撒密码之类的程序来亲自动手,但我坚持使用以下代码:

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;
}

现在我只是想弄清楚为什么我无法为字符复制输入字符。末尾的加密字符串显示为空。然而 charprintf 语句会产生正确的值。

代码可能有什么问题?

最佳答案

您没有复制字符串的第一个字符(位于索引 0 处)。您确实将该字符设置为 0 (NUL),因此当您将 encrypted 打印为字符串时,看起来它的长度为零。

删除if (i>0)测试并无条件复制字符。您还可以删除 encrypted[0] = 0; 行,因为您将使用字符串的第一个字符覆盖它。

关于在C中复制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45583940/

相关文章:

c - 在main()中调用函数时遇到麻烦

c - 为什么段错误

c - 在 C 中,当没有任何内容可读时,读取函数 "know"是如何实现的?

c - C 中允许的静态数组的最大大小是多少?

java - java中如何强制转义字符

.net - 如何在 C++ 中将 std::string 转换为 CV::String?

java - 十六进制 -> float 转换不准确

c - Lua C API : undefined reference errors in liblua.a

python - 从 np.argpartition 索引更快地索引 3D NumPy 数组

c++ - 如何在不使用指针的情况下编写对 10 个整数数组的引用?