社区
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编译器,
到这走不下去了。不知道为什么?
...全文
103
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只是一个指针,指向一个常量字符串,本身没有空间
任何对它指向的内容的修改都是错误的
你应该申请一个字符数组就可以了
c语言没
错误
但运行不出来的,
编译
没错
但运行不出来,求高手解答 !!!!...
该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#include/*** 地址列表模块的声明*//*** 数据特征**** 各种数据的最大长度(包括结尾的NULL字节)和地址的最大数量。*/#define NAME_LENGTH 30 /*允许出现的最长名字*/#define ADDR_LENGTH 100 /*允许出现的最长地址*/#def...
字符串
相关
操作
函数
字符串
操作
及其相关函数(strlen,strcmp,strcpy,strstr)
【Java基础】
编译
运行 & 规范
上节学到 Java 的
编译
与运行,我们已经学会了怎么去执行一个写好(假装我们已经会写了)的代码,这篇当然要试试手啦 O(∩_∩)O 哈哈~ 小试一下 新建一个 HelloAhanWhite.java 文件,将下方代码复制到文件中。 public class HelloAhanWhite { public static void main(String[] args) { ...
编译
错误
问题解决
在
编译
时遇到一个奇怪
错误
,缺少“;”(在“<class-head>”的前面)纠结了好半天没找到原因,把提示
错误
处的代码拿到新工程里测试也没发现问题。后来进一步发现,原因竟然是,在这一段代码的前面的代码部分,少写了一个分号。看来
编译
器给出的提示
没错
,是我给忽视了,谨此以记。...
在自己的
编译
器上结果对到oj上
错误
_段
错误
产生的原因~
原文:https://blog.csdn.net/qq_29350001/article/details/53780697一、什么是段
错误
? 一旦一个程序发生了越界访问,cpu 就会产生相应的保护,于是 segmentation fault 就出现了,通过上面的解释,段
错误
应该就是访问了不可访问的内存。这个内存区要么是不存在的,要么是受到系统保护的,还有可能是缺少文件或者文件损坏。二、段...
C++ 语言
65,214
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章