LinuxSir.cn,穿越时空的Linuxsir!

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

仅仅6行的代码中奇怪的问题

[复制链接]
发表于 2005-8-25 07:02:28 | 显示全部楼层 |阅读模式
本人在Suse9.2下在用标准C函数库中的getline()函数时出现了一个奇怪的问题(本来是中等规模的一个程序,现在已经把问题定位在了这6行代码内)

file=fopen("/home/tiger/111","r");
while(TRUE){                                            
    /*printf("");*/
    if(getline(&line,n,file)==-1)break;                                                  
    printf("%s",line);                                                                        }               
fclose(file);

其中几个变量的类型分别为:char* line; int* n; FILE* file;

代码就是要把一个文本文件"/home/tiger/111"的内容显示在终端上,编译正常,在运行时正确显示了文件中的内容,但是在开头出现报错信息:
lookup 0x08048000 0x00000328 -> 0x404ba000 0x00041780 /1 printf

后来反复实验发现只要在getline()函数前面任何位置运行printf(),例如,把以上代码中的注释去掉后运行报错信息就没有了。

请高手指点一下这是怎么回事,谢谢!!
发表于 2005-8-25 08:47:08 | 显示全部楼层
可能与控制台的缓存功能 有关,试试运行前,清一下缓存。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-25 18:42:03 | 显示全部楼层
Sorry,我是新手,控制台缓存怎么清?
回复 支持 反对

使用道具 举报

发表于 2005-8-25 18:51:49 | 显示全部楼层
给line分配了空间了吗?另外用fflush()进行清空。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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