LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 728|回复: 4

两个小问题,请教高人

[复制链接]
发表于 2004-2-25 20:53:24 | 显示全部楼层 |阅读模式
1:
一段从文件中读取数据的代码,文件由一串字符组成,没有换行:

char *data;
FILE *f;

f = fopen("a.dat", "r");
data = (char *)malloc(100);   /*实际的程序中是由变量的值决定需要的空间*/
fread(data, sizeof(char), 100, f);
fclose(f);

用gdb看data的值时,有时会出现多出几个字符的现象,因为data在后面的使用中是作为字符数组来使用的,绝对访问不到data[0]--data[99]以外的值,所以程序运行起来看不出什么异常。但总是不明白为什么会这样呢?

2:编译好的程序,如果这样运行
./program
就没有问题,但如果在别的路径下,用绝对路径来运行,就会segametation fault,这是为何?

请高手不吝赐教,多谢!
发表于 2004-2-25 22:41:48 | 显示全部楼层
1.data的类型是char *,gdb显示data的时候是按字符串处理的,一直显示到第一个'\0',所以有时会多几个字符
2.应该没有这个问题呀?应该是和你的程序有关。
 楼主| 发表于 2004-2-25 23:59:14 | 显示全部楼层
多谢libinary兄。
是一个控制台下的framebuffer程序,系统为Debian3.0,vga=789模式,会和这个有关吗?
发表于 2004-2-26 06:22:15 | 显示全部楼层
应该和framebuffer没什么关系,你加几个调试语句看看,到底是哪一步segametation fault的
 楼主| 发表于 2004-2-26 12:53:22 | 显示全部楼层
多谢libinary版主,第二个问题已解决。原因在于我打开的文件位于程序同一个目录下,在别处运行就会因打不开指定的文件出错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表