| |||
| 实现 void delete_char(char *str, char ch),把str中所有的ch删掉。 我这里实现了一个函数如下: void delete_char(char *from, char ch){ char *p; char *q = from; char temp; for(p = from; (temp=*from) != '\0'; from++){ if (temp != ch){ *p=temp; p++; } } *p = '\0'; from = q; } 主函数测试: void main(){ char aa[] = "abcabcdefgabc"; printf("初始字符串为:%s\n", aa); delete_char(aa, 'c'); printf("删除后字符串为:%s\n", aa); system("pause"); } 测试结果正常,但是如果把定义 char aa[] = "abcabcdefgabc";改为 char *aa = "abcabcdefgabc"; 在运行过程中就会在*p=temp;处发生地址访问冲突,请问这是为什么呀? 此帖于 2008-08-16 10:35 PM 被 afey 编辑. |
| |||
| 引用:
char aa[] = "abcdef"; 这里定义了一个变量,变量的类型是数组,数组中每个元素的值是可以改变的。 char *aa = "abcdef"; 这里定义了一个变量,变量的类型是指针,这个指针指向了一个常字符串,虽然指针的值是可以改变的,但是指针指向的内容因为是常量所以是不能改变的。 |