1. 程式人生 > >如何修改字符串中的字符

如何修改字符串中的字符

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 }

運行結果:

技術分享

如何修改字符串中的字符