2012-07-16 73 views
3

我正在通過創建各種簡單函數來學習C指針。我剛剛創建了一個函數來反轉char數組。它可以工作,但在輸出之後它還會顯示一堆垃圾字符(請參見下面的截圖)。C:控制檯輸出中的垃圾字符

Screenshot

這裏是我的代碼:

void reverseString(); 

int main() 
{ 
    reverseString(); 

    system("PAUSE"); 
    return 0; 
} 

void reverseString() 
{ 
    char string1[20], string2[20]; 
    char *ptr1, *ptr2; 
    ptr1 = &string1[0]; 
    ptr2 = &string2[0]; 

    printf("Enter string: \n"); 
    scanf("%s", string1); 

    int len1 = strlen(string1); 

    int i; 
    for (i = 0; i < len1; i++) 
    { 
     ptr2[i] = ptr1[len1 - i - 1]; 
    } 

    printf("%s\n", string2); 
} 

我怎樣才能擺脫垃圾字符的?我的代碼有什麼問題,或者我沒有解釋什麼或什麼?

回答

8

你忘了NUL,終止新的字符串:當您打印char*

int i; 
for (i = 0; i < len1; i++) 
{ 
    ptr2[i] = ptr1[len1 - i - 1]; 
} 

// Add this 
ptr2[i] = '\0'; 

,它會繼續讀書,直到找到空字符。但是,既然你離開了它,它一直在繼續...

+0

所以原始的LOL ..我很高興我主要用c sharp工作。感謝你! – Matt 2012-07-16 04:37:39

+3

還有人說它至今仍在印刷! – 2012-07-16 04:37:39