社区
C++ 语言
帖子详情
字符串操作的错误。编译没错,运行不了
cobra_chen
2010-07-13 11:51:39
bool Fun(char *str)
{
while(*str != '\0')
{
if(*str == 't')
{
*str = ' '; //调试在这走不下去了
}
str++;
}
return true;
}
void main()
{
char *str = "string test";
Fun(str);
cout<<str<<endl;
}
用指针把字符串里的't',改成' '。
用的VS2005编译器,
到这走不下去了。不知道为什么?
...全文
66
9
打赏
收藏
字符串操作的错误。编译没错,运行不了
bool Fun(char *str) { while(*str != '\0') { if(*str == 't') { *str = ' '; //调试在这走不下去了 } str++; } return true; } void main() { char *str = "string test"; Fun(str); cout<<str<<endl; } 用指针把字符串里的't',改成' '。 用的VS2005编译器, 到这走不下去了。不知道为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
leonleo
2010-07-13
打赏
举报
回复
调试了一下你的代码,问题出在字符串所在的内存区域是只读,所以写入会引起异常。把字符串定义改为char str[] = "string test";就可以避开这个只读属性的限制
紫色动力
2010-07-13
打赏
举报
回复
[Quote=引用 3 楼 cobra_chen 的回复:]
引用 1 楼 michael122 的回复:
str只是一个指针,指向一个常量字符串,本身没有空间
任何对它指向的内容的修改都是错误的
你应该申请一个字符数组就可以了
char *str = "string test";
不是已经申请了空间了么?
然后把这段空间的首地址给str,然后str再传给Fun里的str,不就可以用到申请的那段空间了么?.
如果我的理解错了的话,那应该……
[/Quote]
你这样做并没有申请空间。只是把一个常量赋值给指针,是会报错的。用malloc或者new才是申请空间。
yuhuaijun
2010-07-13
打赏
举报
回复
[Quote=引用 1 楼 michael122 的回复:]
str只是一个指针,指向一个常量字符串,本身没有空间
任何对它指向的内容的修改都是错误的
你应该申请一个字符数组就可以了
[/Quote]
赞
zhangweiit
2010-07-13
打赏
举报
回复
"不是已经申请了空间了么?"
这个,应该不能说是申请了空间
char *str = "string test";
这一个语句的效果是这样的
"string test",保存在函数栈空间中
然后,*str指向它
"string test"的空间是不可修改的,因为是一个常量
而Func试图去修改它
*str = ' ';
笨笨周0915
2010-07-13
打赏
举报
回复
如果str指向的是常量区的话,那么会报错的,不能修改常量字符串,如果非常量字符串的话则可以Fun("aaaaa");或者 char* lp = "aaaa"; Fun(lp);这样肯定报错,char lp [] = "string test";这不会的
cobra_chen
2010-07-13
打赏
举报
回复
看来还是要好好看看指针。
cobra_chen
2010-07-13
打赏
举报
回复
[Quote=引用 1 楼 michael122 的回复:]
str只是一个指针,指向一个常量字符串,本身没有空间
任何对它指向的内容的修改都是错误的
你应该申请一个字符数组就可以了
[/Quote]
char *str = "string test";
不是已经申请了空间了么?
然后把这段空间的首地址给str,然后str再传给Fun里的str,不就可以用到申请的那段空间了么?.
如果我的理解错了的话,那应该怎么理解呢?
Fun里是不是不能对那段地址进行修改呢?
ArmStronger
2010-07-13
打赏
举报
回复
[Quote=引用 1 楼 michael122 的回复:]
str只是一个指针,指向一个常量字符串,本身没有空间
任何对它指向的内容的修改都是错误的
你应该申请一个字符数组就可以了
[/Quote]
char str[] = "string test";
michael122
2010-07-13
打赏
举报
回复
str只是一个指针,指向一个常量字符串,本身没有空间
任何对它指向的内容的修改都是错误的
你应该申请一个字符数组就可以了
Python 47个
字符串
方法
如果是,来学学本课程吧,本课程以讲解官网文档的方式,讲解 Python 47个
字符串
方法,涉及替换、删除、连接、查找、分割、格式化、编码、转换等
字符串
操作
,带同学们系统学习 Python
字符串
方法。 &...
java
编译
异常,运行异常,
编译
错误
,运行
错误
的区别(一)
(2)运行时异常(发生在运行阶段,
编译
器不强制捕获也不处理):NullPointerException(使用null
字符串
的长度,用null
字符串
equals(某
字符串
))、ArithmeticException(整数除以0)、IndexOutOfBounds...
【Java SE】数据类型常见
错误
及
字符串
拼接与转换
【JavaSE】数据类型常见
错误
及
字符串
拼接与转换
idea
编译
错误
的问题
byte, char, short or int,意思就是类型
错误
,不支持
字符串
类型。 其实这个是java的语言级别没有设置好导致的问题,因为jdk1.7之前的版本是不支持switch的
字符串
类型的,所以我们只需要调整IDEA
编译
器的语言级别为...
字符串
在java语言中是属于引用数据类型_Java学习笔记之:Java引用数据类型之
字符串
...
一、简介
字符串
广泛应用在Java编程中,在Java中
字符串
属于对象,Java提供了String类来创建和
操作
字符串
。创建
字符串
最简单的方式如下:String greeting = "Hello world!";在代码中遇到
字符串
常量时,这里的值是"Hello...
C++ 语言
64,642
社区成员
250,474
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章