Chinaunix首页 | 论坛 | 博客
  • 博客访问: 379570
  • 博文数量: 87
  • 博客积分: 983
  • 博客等级: 准尉
  • 技术积分: 685
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-25 07:20
文章分类

全部博文(87)

文章存档

2016年(1)

2015年(3)

2014年(55)

2013年(13)

2012年(15)

分类: C/C++

2014-03-21 16:04:35

写了一段小程序,发现又一个知识点没有掌握好。

点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #include<string.h>

  3. int main(void)
  4. {
  5.     char *str = "root:/bin:/bash";
  6.     ......
  7.     strtok(str, ":");
  8. }



出现段错误,原因是strtok会改变改变字符串(第一个参数)的内容,而"root:/bin:/bash" 是常量字符串,存储在常量区,是只读的,不恩能够修改其内容。解决的办法就是用字符串数组 str[] = "root:/bin:/bash",数组和指针是有本质区别的,
str[]是存储在栈区的,
str[] = "root:/bin:/bash"相当于从常量区拷贝其内容到栈区。
阅读(589) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~