如何修改字符串中的字符
阿新 • • 發佈:2017-09-15
cnblogs 賦值 ges 指向 clu oid ios 個數 .com
如何修改字符串中的字符
目的:用指針指向一個字符串,然後用指針加下標修改字符串中的某個字符。
第一反應代碼如下:
1 #include<iostream> 2 using namespace std; 3 void test(char *a, int n) 4 { 5 a[n] = ‘0‘; 6 } 7 8 int main() 9 { 10 //char b[] = "987654321"; 11 //char* a= b; 12 char* a = "987654321"; 13 printf("顯示原始字符串a=%s\n", a);14 a[0] = ‘1‘; 15 printf("顯示a[1]值是否從9改為1,a[1]=%c\n", a[0]); 16 printf("顯示第1次修改後的字符串a=%s\n",a); 17 test(a,1); 18 printf("顯示第2次修改後的字符串a=%s\n", a); 19 system("pause"); 20 return 0; 21 }
但是運行結果報錯,如下:
也就是第14行代碼a[0]=‘1‘;有問題。
因為這裏指針a指向的是一個字符串常量,常量是無法修改的。所以解決方案如下:
先將其賦值到數組,再用指針指向這個數組,就可以實現用指針a修改或者用數組b修改了;
1 #include<iostream> 2 using namespace std; 3 void test(char *a, int n) 4 { 5 a[n] = ‘0‘; 6 } 7 8 int main() 9 { 10 char b[] = "987654321"; 11 char* a= b; 12 //char* a = "987654321"; 13 printf("用指針a顯示原始字符串a=%s\n", a); 14 printf("用數組b顯示原始字符串b=%s\n", b); 15 a[0] = ‘1‘; 16 printf("顯示a[0]值是否從9改為1,a[0]=%c\n", a[0]); 17 printf("顯示b[0]值是否從9改為1,b[0]=%c\n", b[0]); 18 printf("顯示第1次修改後的字符串a=%s\n",a); 19 test(a,1); 20 printf("顯示第2次修改後的字符串a=%s\n", a); 21 system("pause"); 22 return 0; 23 }
運行結果:
如何修改字符串中的字符