作者pongremix (洪爺不賣漢堡)
看板C_and_CPP
標題[問題] 關於access violation
時間Sun Dec 20 00:43:36 2009
( *[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