struct cheweixinxi //车位信息 { int bianhao; //车位编号 char weizhi[100]; //车位位置 int zhuangtai; //车位状态,0 表示空闲,1 表示已被占用 struct cheweixinxi *next; }; //车位信息初始化 void cheweixinxi() { struct cheweixinxi *head2; struct cheweixinxi *pr,*P; for(int i=0;i<N;i++) { p=pr=(struct cheweixinxi *)malloc(sizeof(struct cheweixinxi)); p->bianhao=i+1; sprintf(p->weizhi,"Location %d",i+1); p->zhuangtai=0; FILE *fp = fopen("车位信息.txt", "ab+"); if(fp==NULL) { printf("\t\t\t\t打开文件失败!\n"); exit(1); } if(head2==NULL) { head2=p; } else { pr->next=p; pr=p; } fprintf(fp, "%s %s %s\n", pr->bianhao, pr->weizhi,pr->zhuangtai); } pr->next=NULL; fclose(fp); } }是否有错
时间: 2024-02-05 21:02:39 浏览: 136
这段代码存在一些错误:
1. 在函数内部,定义了一个指向`struct cheweixinxi`类型的指针`p`,但是在`for`循环中未进行定义,应该改为`struct cheweixinxi *p, *pr;`。
2. 在文件写入时,应该使用`%d`替换`%s`,因为`bianhao`和`zhuangtai`是整型变量,而不是字符串。
3. 在函数结束前,应该在代码后面加上`return`语句,以返回链表的头节点`head2`。
修改后的代码如下:
```
struct cheweixinxi //车位信息
{
int bianhao; //车位编号
char weizhi[100]; //车位位置
int zhuangtai; //车位状态,0 表示空闲,1 表示已被占用
struct cheweixinxi *next;
};
//车位信息初始化
struct cheweixinxi *cheweixinxi()
{
struct cheweixinxi *head2 = NULL;
struct cheweixinxi *p, *pr;
for(int i = 0; i < N; i++)
{
p = pr = (struct cheweixinxi *)malloc(sizeof(struct cheweixinxi));
p->bianhao = i + 1;
sprintf(p->weizhi, "Location %d", i + 1);
p->zhuangtai = 0;
FILE *fp = fopen("车位信息.txt", "ab+");
if(fp == NULL)
{
printf("\t\t\t\t打开文件失败!\n");
exit(1);
}
if(head2 == NULL)
{
head2 = p;
}
else
{
pr->next = p;
pr = p;
}
fprintf(fp, "%d %s %d\n", pr->bianhao, pr->weizhi, pr->zhuangtai);
fclose(fp);
}
pr->next = NULL;
return head2;
}
```
阅读全文