C语言的文件操作,有一个问题。。

下面是我写的程序,和书上一样,但是就是写不到文件中去,能够创建文件,不能写入数据,求解决,谢谢。这个程序目的是:从键盘读入若干客串,对它们按字母顺序排序,然后把它们送到磁... 下面是我写的程序,和书上一样,但是就是写不到文件中去,能够创建文件,不能写入数据,求解决,谢谢。

这个程序目的是:从键盘读入若干客串,对它们按字母顺序排序,然后把它们送到磁盘文件中保存。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
FILE *fp;
char str[3][10],temp[10];
int i,j,k,n=3;

printf("Enter strings:\n");
for(i=0;i<n;i++)
{
gets(str[i]);
}

for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(str[k],str[j])>0)
k=j;
if(k!=1)
{
strcpy(temp,str[i]);
strcpy(str[i],str[k]);
strcpy(str[k],temp);
}

}

if(fp=fopen("d:\\string.dat","w")==NULL)
{
printf("Cannot open file!\n");
getch();
exit(0);
}

printf("\nthe new sequence:\n");
for(i=0;i<n;i++)
{
fputs(str[i],fp);
fputs("\n",fp);
printf("%s\n",str[i]);
}

}
展开
 我来答
My空心果
2011-09-10 · TA获得超过1290个赞
知道小有建树答主
回答量:753
采纳率:0%
帮助的人:616万
展开全部
if(fp=fopen("d:\\string.dat","w")==NULL)
应该改为:要再加一对括号。如下:
if((fp=fopen("d:\\string.dat","w"))==NULL)
另外,要把以下代码:
for(i=0;i<n;i++)
{
fputs(str[i],fp);
fputs("\n",fp);//删除掉
printf("%s\n",str[i]);
}
尘岚醉侠
2011-09-10 · TA获得超过287个赞
知道小有建树答主
回答量:738
采纳率:0%
帮助的人:259万
展开全部
楼上是对的
其实就比较的时候执行了后面的==,把==的结果赋值给fp,自然会出错
再加个fclose(fp);就完美了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Frank7258
2011-09-10 · TA获得超过1503个赞
知道小有建树答主
回答量:381
采纳率:0%
帮助的人:548万
展开全部
最后加fclose(fp)在看结果。文件打开之后需要关闭,否则文件缓冲区内容可能不会保存到实际的磁盘中去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式