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]);
}
} 展开
这个程序目的是:从键盘读入若干客串,对它们按字母顺序排序,然后把它们送到磁盘文件中保存。
#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]);
}
} 展开
3个回答
展开全部
楼上是对的
其实就比较的时候执行了后面的==,把==的结果赋值给fp,自然会出错
再加个fclose(fp);就完美了
其实就比较的时候执行了后面的==,把==的结果赋值给fp,自然会出错
再加个fclose(fp);就完美了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最后加fclose(fp)在看结果。文件打开之后需要关闭,否则文件缓冲区内容可能不会保存到实际的磁盘中去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询