看板 C_and_CPP 關於我們 聯絡資訊
( *[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
firose:"AbcdEFgHijKLmn" 那串字是不能修改的. 可以設給 char * 12/20 00:47
firose:記得是因為歷史因素 12/20 00:48
VictorTom:呈1F: 改成 char ptr[]="AbcdEFgHijKLmn"; 就行了:) 12/20 00:52
pongremix:真的耶...但是為什麼原來那樣的寫法有錯嗎 12/20 01:03
pongremix:有人知道嗎? 12/20 01:04
VictorTom:原來那個用法, 該字串相當於是constant, 所以你嘗試對它 12/20 01:05
VictorTom:寫入就會得到這樣的錯誤:) 12/20 01:06
pongremix:咦..這是書本的例子..原來這樣是錯的 12/20 01:12
VictorTom:待會樓下大概會有人問書名或者叫你丟掉換一本XD 12/20 01:13
pongremix:我要寫個慘字...買錯書了 12/20 01:15
saxontai:範例出錯並不代表整本書不可取啊 XD 12/20 01:18
pongremix:感謝上面大大的回答 12/20 01:31