| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6530 人关注过本帖
标题:把数字加进字符串里面
只看楼主 加入收藏
yudeyinji198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:133
注 册:2012-8-30
结帖率:96%
收藏
已结贴  问题点数:10 回复次数:9 
把数字加进字符串里面
如何把数字加到字符串里面呢?
例如:
 char *p="asdf";
 int n=3;

 如何变成 asdf3?

请教!
搜索更多相关主题的帖子: 字符串 如何 
2012-12-22 21:00
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这是论坛反复出现过的问题,很多人答过很多次了。

授人以渔,不授人以鱼。
2012-12-22 21:05
yudeyinji198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:133
注 册:2012-8-30
收藏
得分:0 
回复 2楼 TonyDeng
斑竹,我搜索不到才发问的。
板里很多字符串转数字的,我想问的是字符串加入数字,不是转换!
2012-12-22 21:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
"asdf"是一个没有名字的常量字符串,由于没有名字,所以必定是常量,编译器通常把这种常量数据存放在一个叫只读的区域中,里面的数据是无法改变的——你考虑一下,假如有两串类似的常量字符串,"asdf"和"mnbv",那么编译器极可能把这两个串并排放在一起,亦即如果你强硬修改"asdf"为"asdf3",那么就意味着篡改后面的数据,这是绝对不允许发生的,也正是编译器把这种数据储存为常量的原因。

你的p只是一个指针,它指向这个字符串的地址,但并不意味着指向了就能修改,比如被指的数据是在ROM的地址上,是改不了的。还是原先的问题,有地址是一回事,有数据又是另一回事,而数据能否被修改更是另一回事。不要滥用指针,这是我反复强调过的。

你可以将"asdf"通过地址把字符逐个抄出来显示,然后在显示的地方后面自己加个字符'3',以造成"asdf3"字符串的假象,但绝对无法把原来的"asdf"数据改掉。没有办法加入,最多重新构造一个新的字符串。将来你学到更高级的语言,就会知道一种叫string字符串是无法修改的概念——任何表面上看起来改过的,都是重新复制出来的,连地址都跟原先不同,这也是它们禁用指针的原因。

[ 本帖最后由 TonyDeng 于 2012-12-22 21:27 编辑 ]

授人以渔,不授人以鱼。
2012-12-22 21:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
常量字符串储存在静态只读区,这一大堆解答,你应该看过,怎么就不意识到自己这个问题也是常量数据呢?看到过答案而没有意识,这才更值得反思!很多人看书也是这样,说人家老谭的书如何不堪,但其实人家讲过的最基本的常识你也守不住,就去指责人家的水平如何如何。这是一样的道理。

授人以渔,不授人以鱼。
2012-12-22 21:26
yudeyinji198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:133
注 册:2012-8-30
收藏
得分:0 
回复 4楼 TonyDeng
恩恩,我也意识到那是个常量了,不可更改的。
我也知道自己的问题比较基础,就是斑竹您说的,基础不牢固。
谢谢斑竹的解释。

我试了一种方法,是把这个字符串复制出来,再把数字用itoa转换成字符串,然后用strcat连起来。
2012-12-22 21:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不要以为追加就不算改数据。"asdf"是一个字符数组x[5],编译器就只计算出x[5]这么长的空间,也仅分配这么多空间给它。你要追加为"asdf3",不单修改了x[4]的值,还把整个数组的长度都改变了,就算不在只读区,C语言本身也不允许你这样动态变化数组的长度。知道自己期望的操作到底在干什么,这是最主要的。

授人以渔,不授人以鱼。
2012-12-22 21:36
yudeyinji198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:133
注 册:2012-8-30
收藏
得分:0 
回复 7楼 TonyDeng
恩恩,我知道自己的想法,但是去实现的时候,总是出问题,一个原因就是基础不够牢,谢谢了!
2012-12-22 21:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你明白上面所说的那些原理之后,以后写程序时都这样想一想,就知道该怎么做了。明白这些,比照抄照搬现成的代码有用得多,后者,抄成功了不等于自己真的明白,一旦没得抄,就照样犯这种低级错误。

授人以渔,不授人以鱼。
2012-12-22 21:43
yudeyinji198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:133
注 册:2012-8-30
收藏
得分:0 
回复 9楼 TonyDeng
恩,谢谢!
2012-12-22 21:49
快速回复:把数字加进字符串里面
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018580 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved