如何修改字符串中的字符

如何修改字符串中的字符

目的:用指针指向一个字符串,然后用指针加下标修改字符串中的某个字符。

第一反应代码如下:

 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 }

运行结果:

时间: 2024-10-27 12:29:44

如何修改字符串中的字符的相关文章

字符串中单个字符的用法

我们使用字符串时经常要对字符串中单个字符进行处理,比如检测一个string对象是否包含空白,或者把string对象中的字母大写改为小写,查看某个特定字符是否出现,判断字符串是否为数字等等. 这类处理的关键是要获取字符本身.有时需要处理string对象中的每一个字符,另外一些时候则只需处理某个特定的字符,还有些时候遇到某个条件处理就要停下来. 在cctype头文件中定义了一组标准库函数处理字符串的工作. cctype头文件中的函数 isalnum(c)    当c是字母或数字时为真 isalpha

1.判断字符串中的字符是否唯一

如果我们假设字符集是ASCII字符,那么我们可以开一个大小为256的bool数组来表征每个字符的出现.数组初始化为false,遍历一遍字符串中的字符,当bool数组对应位置的值为真, 表明该字符在之前已经出现过,即可得出该字符串中有重复字符.否则将该位置的bool数组 值置为true. 核心代码: 1 bool isCharUnique(string s) 2 { 3 bool a[256]; 4 int i =0; 5 memset(a,0,sizeof(a)); 6 int len = s.

寻找字符串中出现字符最多的次数,出现次数最多的字符,出现次数最多的字符的索引

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>demo</title> <link rel="stylesheet" href="css.css"> <script src="js.js"></script>

【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。

/*编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数.*/ #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_string

js如何将字符串中的字符位置倒转

js如何将字符串中的字符位置倒转:在实际需要中,可能需要将字符串中的字符的位置反转,当然可能应用不会这么直接,下面就通过代码示例介绍一下如何实现此效果,希望能够给需要的朋友或多或少带来一定的帮助.代码实例如下: var str="antzone"; var strArray=str.split(""); console.log(strArray.reverse().join("")); 以上代码实现了我们的要求,非常的简单,就是使用split()

将字符串中不同字符的个数打印出来

描述:  找出字符串中,不同的字符的个数. 题目类别:  字符串  难度:  初级  运行时间限制: 无限制 内存限制: 无限制 阶段:  入职前练习  输入: 输入一个字符串,'\0'作为字符串结束符. 输出: 输出字符串中不同字符的个数. 样例输入: 122345 样例输出: 5 完整代码: #include <iostream> using namespace std; int main() { int cnt[256]={0}; char s[100]; int count=0; ge

计算字符串中每个字符出现次数

作者:zccst 思想原理:把字符串分割为数组,粒度为每一个字符.循环该数组,用正则替换原字符串对于字符,并计算替换前后字符串长度差值,即为该字符出现的次数. 另外,还可以对重复次数进行排序. 用到的知识点: 1,正则表达式.基本写法,RegExp,replace的用法. 2,数组中的sort.自定义函数排序.(sort默认按字符编码排序) function charCntInString (argument) { var str = argument,result = [],beforeLen

微软算法100题88 将字符串中的字符&#39;*&#39;移到串的前部分

函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量.如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5.(要求使用尽量少的时间和辅助空间) 思路:类似于快速排序,用两个指针分别指向字符数组的左右边界,寻找左边第一个不为*的字符,寻找右边第一个*,然后交换字符,然后继续寻找和交换的过程,直到两个指针相交, 时间复杂度o(n), 空间复杂度o(1) 第一个写的程序有问题,没有考虑到保持

Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例

1. 首先我们看看统计字符串中每个字符出现的次数的案例图解: