c - 输出额外字符的简单字符加密

标签 c string encryption char

我目前正在尝试简单地用 c 语言加密一个 char 字符串

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

void encrypt(char *str, int size);

int main(){
char input[8192];
int length;

printf("INPUT A PHRASE: ");
fgets(input, 8192, stdin);
length = strlen(input) -1;
printf("LENGTH: %d\n", length);
char result[length];
strcat(input, result);

encrypt(result, length);
printf("ENCRYPTION: %s\n", result); 
return 0;
}

void encrypt(char str[], int size){
int i;
for(i = 0; i < size ; i++){
    str[i] = 'X';               
    }
}

然而,当我去执行代码时,输​​出会在末尾添加随机字符,如下所示

INPUT A PHRASE: fg
LENGTH: 2
ENCRYPTION: XXà;ÿ

我很困惑为什么要在末尾添加额外的字符。如果有人能澄清为什么这个问题继续发生,我们将不胜感激。

最佳答案

你已经在 strcat 中反转了变量

char *strcat(char *dest, const char *src)

从这里:http://www.tutorialspoint.com/c_standard_library/c_function_strcat.htm

关于c - 输出额外字符的简单字符加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35143999/

相关文章:

c - 同步原语的简单/规范实现?

java - 新手程序员需要建议 : "String index out of range" - Java

.net - none 和 null CipherAlgorithmType 之间有什么区别?

java - 使用SplitString分隔输入句子并根据字母降序排序

java - 在java中对字符串进行排序

grails - 有没有一种简单的方法可以对Grails域类中的列进行加密/解密?

java - 替代加密

c - 结构副本与成员副本(时间效率)

c - 为什么我的程序在 GCC 下不进入处理程序模式?

c - 我可以将什么输入用于系统函数 time() 以使其返回 -1(错误条件)?