2016-02-02 46 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'。 –

回答