2016-02-02 47 views
2

目前我正在试图在C简单地加密字符的字符串简单字符加密输出额外的字符

#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à;ÿ 

我很困惑,为什么它在最后加入额外的字符。如果有人可以澄清为什么这个问题继续发生,将不胜感激。

+1

字符串是随后进行了一系列的字符'\ 0'。你的'\ 0'在哪里?另外,那个'strcat'电话打算做什么? – immibis

+0

是的,再看看'strcat'。 'result'数组是未初始化的,所以它包含垃圾,并且将它连接到'input'。 –

回答