2016-02-19 57 views
0
void reverse_String(char a[], int start, int length){ 
    int i; 
    int j = length; 
    for(i = start; i != j ; i++, j--){ 
     a[i] ^= a[j]; 
     a[j] ^= a[i]; 
     a[i] ^= a[j]; 
    } 
    printf("%s", a); 
    } 

int main(int argc, char *argv[]){ 
    int length; 
    char word[strlen(argv[1])]; 
    strcpy(word,argv[1]); 
    length = strlen(word); 
    reverse_String(word,0,length); 
    return 0; 
} 

为什么我为某些条目获取分段错误,但是它适用于其他条目? (Argv [1]是任何字符串输入)C:反转字符串时出现分段错误

+0

...或使用'strdup' –

+0

我建议分配'strlen(argv [1])+ 1'字符。不要忘记最后的空终止符''\ 0''。空终止符不由['strlen()']计算(http://linux.die.net/man/3/strlen)。 – e0k

+1

XOR是一个巧妙的技巧,但不太容易理解,而且效率也不及3个涉及'temp'变量的操作。 –

回答

4

如果字符数是偶数,我将永远不会等于j。你需要改变你的条件我j

+0

是的,这工作,谢谢! – JGens