Chinaunix首页 | 论坛 | 博客
  • 博客访问: 450850
  • 博文数量: 179
  • 博客积分: 3236
  • 博客等级: 中校
  • 技术积分: 1860
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-25 19:13
文章分类

全部博文(179)

文章存档

2011年(34)

2008年(8)

2007年(27)

2006年(110)

分类: LINUX

2006-04-09 13:41:49


Linux 下的C编程基础篇(2)
 
1: c_char.c
 
/* c_char.c */
#include
#include
char *testChar="Hello,I am a test string\n";
void main(int argc,char **argv)
{
    testChar[0]='c';
    fprintf(stdout,"%s",testChar);
}
 
2: compile c_char.c
 
[root@kcn-110]#gcc -o c_char c_char.c
 
[root@kcn-110]#./c_char
 
Segment Fault
 
3: c_char_1.c
 
/* c_char_1.c */
#include
#include
char testChar[]="Hello,I am a test string\n";
void main(int argc,char **argv)
{
    testChar[0]='c';
    fprintf(stdout,"%s",testChar);
}
 
4: compile c_char_1.c
 
[root@kcn-110]#gcc -o c_char c_char_1.c
 
[root@kcn-110]#./c_char_1
 
Hello,I am a test string
 
[root@kcn-110]#
 
5: change c_char.c to c_char.s
 
[root@kcn-110]#gcc -S c_char.c
 
[root@kcn-110]#vim c_char.s
 
change .rodata to .data
 
[root@kcn-110]#gcc -o c_char_s c_char.s
 
[root@kcn-110]#./c_char_s
 
Hello,I am a test string
 
[root@kcn-110]#
 
字符串testChar定义后被放在了.rodata中,不可以修改,所以会出错
 
在汇编代码中将.rodata改为了.data就可以避免这个错误,或者开始声明为字符串数组

阅读(808) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~