- 论坛徽章:
- 0
|
给各位道歉了
没有经验 不懂得提问的方法 以后会想好再发帖问的
先谢谢楼上的朋友了。
因为fopen打开文件成功了,但fcose(fp)有问题,
以为fprintf的返回值不会影响到fp 所以没去检查fprintf的使用
经楼上的朋友们的提醒,去检查了下 发现是先面这行代码出了问题
a,b为字符数组,i,j为整数。
- fprintf(fp,"%s%d%d\n",a,b,i,j);
复制代码
多了一个参数,导致fclose(fp)的时候coredump
但是为什么fprintf的返回值会影响到fp呢 导致fclose的失败?
为了验证 我写了如下的测试代码
虽然有警告 但是却能够正常的执行 fclose也没有导致coredump 而且数据也正常写入了文件
- #include<stdio.h>
- int main()
- {
- FILE *fp;
-
- char a[10]="123456";
- char b[5]="ttt";
- int i = 1;
- int j = 2;
- int n = 0;
- if((fp=fopen("/home/tmp/1.txt","w+"))==NULL)
- {
- printf("can't open file");
- return -1;
- }
- n=fprintf(fp,"%s%d%d\n",a,b,i,j);
- printf("%d\n",n);
- fclose(fp);
- return 0;
- }
复制代码
我的机器是sco5.06 结果如下
n=16
1.txt的文件写入的内容为1234568043985681
搞不明白的是为什么前面那样写会导致fclose的coredump
后面的测试程序又可以通过呢
请高手指点迷津 谢谢。 |
|