标题:[求助]字符串 指针问题
只看楼主
phzzy
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-1
 问题点数:0 回复次数:5 
[求助]字符串 指针问题
就是把字符串的大写字母变小写字母

数组形式就是对的
char str1[]="AAA";
int i = sizeof(str1);
for (i; i>=0; i--) {
if (str1[i] >= 'A' && str1[i] <= 'Z') {
str1[i] = str1[i] + 32;
}
}
printf("%s" , str1);

--------------------------------------

指针形式就是错的...怎么回事?
char *str1="AAA";
int i = sizeof(str1);
for (i; i>=0; i--) {
if (*(str1+i) >= 'A' && *(str1+i) <= 'Z') {
*(str1+i) = *(str1+i) + 32;
}
}
printf("%s" , *str1);
搜索更多相关主题的帖子: 指针 字符 AAA char 
2006-10-25 15:31
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
得分:0 
char *str1="AAA";
等价于const char *str1="AAA";
"AAA"是字符串常量,不可改变

2006-10-25 15:40
husi
Rank: 1
等 级:新手上路
威 望:1
帖 子:46
专家分:0
注 册:2006-10-17
得分:0 
指针形式就是错的...怎么回事?
char *str1="AAA";
int i = sizeof(str1);

用sizeof(str1)也有错误,他返回的是指针所指向变量的首地址的长度。一般为4。并不是str1的长度。
printf("%s" , *str1);把*str1改为str1。

2006-10-25 18:56
holy628
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-4-3
得分:0 

两种方式都存在越界的危险.

2006-10-25 19:08
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
得分:0 
不同的编译器会有不同的处理,你用的VC++编译的吧
C中把字符串常量看成字符数组来处理,所以不会出错
C++中把字符串常量看成真正的常量,在内存中是不可以改变的

unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-25 19:21
phzzy
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-1
得分:0 
哦,谢谢哈:)

2006-10-25 20:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-98651-1-1.html




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

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