2012-12-09 14 views
0

我想在內存引用傳遞到一個字符的字符串,並使用C的代碼是在下面的函數編輯編輯特定的字符:通行證和串

void EditChar(char *input) { 
printf("# %s #",*input); 
*input = *input << 1 
    } 

int main() { 
char *string ="aaaa"; 
EditChar(&string[2]); 
printf("%s",string); 
} 

我可以打印我認爲功能正常的字符必須意味着它跟隨指針,爲什麼我無法編輯該字符的指針位置,任何想法?

+2

可能是因爲當你編寫一個像''aaaa''這樣的**字符串**時,這四個字母被放在計算機內存的一個只讀數據段中。他們是'const',你不能改變他們。 – librik

+0

你的代碼不應該被編譯(當然不是沒有警告),因爲你沒有向EditChar()傳遞'bit'。你也不使用這個變量,但是兩個錯誤並不是真正的正確。 –

+0

哎呀對不起,意味着從函數中刪除該變量,這是我打算使用的東西,一旦我確定這是正常工作,你們中的任何一個知道如何編輯字符串的值,如果它是常量。我只使用字符串aaaa在它的工作時測試函數字符串將是從文件讀入的變量 – user1044220

回答

0

缺少一個;在第三行將會引發問題。

你第2行

而且在我的Mac傳遞一個字符,而不是一個字符指針,一旦你解決這些問題,就在第3行得到一個總線錯誤,因爲你試圖改變閱讀只有記憶。

char * string = strdup(「aaaa」);

現在它工作。

而且,問題的意見陳述,而不是的strdup,您可能需要使用

字符字符串[] = 「AAAA」;