#include <stdio.h> #include <malloc.h> #define N 20 struct cheweixinxi //车位信息 { int bianhao; //车位编号 char weizhi[20]; //车位位置 int zhuangtai; //车位状态,0 表示空闲,1 表示已被占用 struct cheweixinxi *next; }; int main() { void cheweixinxi(); return 0; } //车位信息初始化 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 17:02:44 浏览: 78
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
这段代码有几个问题:
1. 在主函数中调用`cheweixinxi()`函数时,函数名后面没有加括号,应该改为`cheweixinxi();`
2. 在`cheweixinxi()`函数中,定义了一个指向车位信息结构体的指针`head2`,但是没有初始化,就直接使用了,这会导致未定义的行为。应该将`head2`初始化为NULL:
```c
struct cheweixinxi *head2 = NULL;
```
3. 在将车位信息写入文件时,使用了`fprintf()`函数,但是格式字符串中使用了`%s`,这是用于字符串类型的占位符,而这里的`bianhao`和`zhuangtai`是整型,应该使用`%d`占位符。应该改为:
```c
fprintf(fp, "%d %s %d\n", pr->bianhao, pr->weizhi, pr->zhuangtai);
```
还有其他问题需要注意,比如是否需要在函数结束时释放动态分配的内存等。
阅读全文