返回信息流下面这个deleteDuplicate函数的功能是删除字符串中的重复字符。为什么在main函数中,我用数组定义字符串,就能正确运行出结果,而用字符指针就会报错?
目前想到的可能是,如果用字符指针来初始化一个字符串,是不是后面这个字符串是保存在常量区,所以就不能改变?
求大神解答。
#include <stdio.h>
#include <string.h>
//字符串去重
void deleteDuplicate(char *str) {
if (str == NULL) {
return;
}
if (strlen(str) < 2) {
return;
}
char count[256];
memset(count, 0, sizeof(count));
int i;
int index = 1;
int len = strlen(str);
count[str[0]] = 1;
for (i = 1; i < len; ++i) {
if (count[str[i]] == 0) {
str[index++] = str[i];
count[str[i]] = 1;
//++index;
}
}
str[index] = '\0';
}
int main()
{
//char *str = "aabbccdddeadsglkdsjgasdfff";
char str[] = "aabbccdddeadsglkdsjgasdfff";
deleteDuplicate(str);
printf("%s\n", str);
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #82620同步于 2014/9/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[问题]c语言的数组和字符指针的区别
wislov
2014/9/18镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
http://bbs.byr.cn/#!article/CPP/79988
http://bbs.byr.cn/#!article/CPP/80871
我问的类似问题。 求不喷我的渣英语水平。。
http://stackoverflow.com/questions/25917782/where-does-const-string-store-in-stack-or-data
无论.bss还是.rodata最终还是会map进内存,非要改也不是不行:VirtualProtect/mprotect 造奇迹~(前提是你能控制好页对齐)