[問題] 關於access violation

看板C_and_CPP作者 (洪爺不賣漢堡)時間14年前 (2009/12/20 00:43), 編輯推噓2(2010)
留言12則, 4人參與, 最新討論串1/2 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 為什麼出現0Xc0000005 access violation 希望得到的正確結果: aBCDefGhIJklMN 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++ 6.0 on vista 有問題的code: (請善用置底文標色功能) #include <stdio.h> #include <string.h> void letterconvert(char*); int main(void) { char *ptr="AbcdEFgHijKLmn"; /* 定義原字串 */ int i; printf("原字串 %s\n",ptr); for (i=0;i<strlen(ptr);i++) /* 迴圈控制字串的讀取 */ letterconvert(ptr+i); printf("新字串 %s\n",ptr); return 0; } void letterconvert(char *a) { if ((int)*a<97) /* 判斷是否為大寫字母 */ { (*a)+=32; /* 大寫字母的處理 */ } else (*a)-= 32; /* 小寫字母的處理 */ } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.2.36

12/20 00:47, , 1F
"AbcdEFgHijKLmn" 那串字是不能修改的. 可以設給 char *
12/20 00:47, 1F

12/20 00:48, , 2F
記得是因為歷史因素
12/20 00:48, 2F

12/20 00:52, , 3F
呈1F: 改成 char ptr[]="AbcdEFgHijKLmn"; 就行了:)
12/20 00:52, 3F

12/20 01:03, , 4F
真的耶...但是為什麼原來那樣的寫法有錯嗎
12/20 01:03, 4F

12/20 01:04, , 5F
有人知道嗎?
12/20 01:04, 5F

12/20 01:05, , 6F
原來那個用法, 該字串相當於是constant, 所以你嘗試對它
12/20 01:05, 6F

12/20 01:06, , 7F
寫入就會得到這樣的錯誤:)
12/20 01:06, 7F

12/20 01:12, , 8F
咦..這是書本的例子..原來這樣是錯的
12/20 01:12, 8F

12/20 01:13, , 9F
待會樓下大概會有人問書名或者叫你丟掉換一本XD
12/20 01:13, 9F

12/20 01:15, , 10F
我要寫個慘字...買錯書了
12/20 01:15, 10F

12/20 01:18, , 11F
範例出錯並不代表整本書不可取啊 XD
12/20 01:18, 11F

12/20 01:31, , 12F
感謝上面大大的回答
12/20 01:31, 12F
文章代碼(AID): #1BBGAwHP (C_and_CPP)
文章代碼(AID): #1BBGAwHP (C_and_CPP)