2013-01-08 91 views
0

可能有人指出錯誤在此意想不到輸出(指針)

#include <stdio.h> 
void modify (char*s,int x,int y) 
{ 
    s[x]=s[y]; 
} 
main() 
{ 
    char* s = "random"; 
    modify(s,1,2); 
} 

程序突然結束。我知道這可能是一個非常簡單的問題,但我對c是新手。 謝謝!

+0

如果i型 '的printf( 「\ n%C」,S [X]);' 該程序正常工作 –

+0

有什麼期望?一個程序在代碼完成時結束。你發佈的是一個什麼都不做的程序。 –

回答

6

這是因爲它在modify的任務中崩潰。原因是指針指向一個不可修改的常量字符串。

如果要修改字符串,你可以聲明它作爲一個數組來代替:

char s[] = "random"; 
0

就是這樣。我曾經有過同樣的問題。此時應更換這一行:

char *s = "random"; 

隨着下列之一:

char s[] = "random";