2014-03-07 70 views
1

我刷新了我的C知識,並且碰巧跨越此程序以反轉字符串。我有一種感覺,最後反轉字符串的最後一個字符應該被賦值爲'\ 0'值,否則它可能有一個垃圾值。你能否告訴我這段代碼是否正確或需要修改?提前致謝!使用while循環反轉c中的字符串

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

void main() 
{ 
    char str[100],temp; 
    int i,j=0; 

    printf("nEnter the string :"); 
    gets(str); 

    i=0; 
    j=strlen(str)-1; 

    while(i<j) 
    { 
    temp=str[i]; 
    str[i]=str[j]; 
    str[j]=temp; 
    i++; 
    j--; 
    } 

    printf("nReverse string is :%s",str); 
    return(0); 
} 
+0

'我有一種感覺,最後反轉字符串的最後一個字符應該被賦予'\ 0'值'你試過嗎? – yamafontes

+2

難以嘗試嗎? – devnull

+5

你正在交換同一段內存中的字符,所以最後的'\ 0'仍然存在,仍然在字符串的末尾。 –

回答

0

man gets

...緩衝端接一個0

我想你都設置!

+3

同樣根據'man gets':「永遠不要使用gets()。因爲在事先不知道數據的情況下無法分辨get()將讀取多少個字符,並且因爲gets )將繼續存儲緩衝區末尾的字符,這是非常危險的,它被用來破壞計算機的安全,改用fgets()。 –

+1

'gets'甚至在C11中都沒有 – michaelmeyer