c 语言不能打开文件

来源:百度知道 编辑:UC知道 时间:2024/05/16 05:45:39
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include <io.h>

typedef struct node{
char name[20];
char number[10];
char address[40];
struct node *next;
}node;
node *head,*p1,*p2,*p3,*temp;
int l,i=0;
FILE *fp;
/*插入结点*/
void insert(node* temp){
}

/*输出链表*/
void print()
{
}

void write(){ /*保存数据*/
p1=head->next;
while(p1!=NULL)
{
fprintf(fp," %s",p1->name);
fprintf(fp," %s",p1->number);
fprintf(fp," %s\n",p1->address);
p1=p1->next;
}
}

int main(){ /*主函数*/
fp=fopen("files.txt","wb"); /*打开文件*/
if(fp==NULL){
printf("不能打开文件!");
getch();
return 0;
}
while(1){
temp=(node*)malloc(sizeof(node)); /*新建一个结点*/

1.你的文件是创建成功的,并且是可以打开的,你可以使用VC6.0或VS2005调试跟踪就可以看到

2.但是你程序有错误,不是说你的程序编译不过,而是你的程序逻辑有错误,可以看到的一点就是你的Write函数
void write(){ /*保存数据*/
p1=head->next;
while(p1!=NULL)
{
fprintf(fp," %s",p1->name);
fprintf(fp," %s",p1->number);
fprintf(fp," %s\n",p1->address);
p1=p1->next;
}

请问你的head->next哪里赋值了?使用VC6.0跟踪的时候明显看到其地址仍然是空的,所以你的这个操作就错误了,所以当程序要执行Write函数就会出错

3.你想往你的链表里添加节点信息,但是你得到的不是你想的结果,请看你的while(1)语句;

4.你搜索一下相关的C语言链表操作代码学习下吧;

5.当你熟悉了链表操作再使用文件操作吧,那样你遇到的问题就少点,一步一步来,这样进步就快点。

你的程序没有写完整,找不到文件是不是你的文件没有放在tc的根目录下,你也可以用绝对路径c:\\file.txt,最好能把整个程序拿出来,不然很难看

简单
int main()
{ /*主函数*/
fp=fopen("files.txt","wb"); /*打开文件*/
if(fp==NULL)
{
printf("不能打开文件!");
getch();
return 0;
}

---------
改为:
if((fp=fopen("files.txt","wb"))==NU