#include <stdio.h> struct stu{ int num; char sex; int birth; }stu_[3]={{1,'1',427},{2,'2',414},{3,'2',1212}}; struct stu *p=stu_; int main() { FILE *fp; fp=fopen("C:\\Users\\张px\\Desktop\\input.txt","r+"); fseek(fp,0,2); fwrite(p++,sizeof(stu),3,fp); return 0; }有什么问题
时间: 2024-02-01 20:15:21 浏览: 60
这段代码存在以下问题:
1. 文件打开方式应该使用 "w+",而不是 "r+",因为你想要向文件中写入数据。
2. 在调用 fwrite 函数之前,应该先检查 fp 是否为 NULL,以确保文件打开成功。
3. 在调用 fseek 函数之前,需要先检查 fp 是否为 NULL,并且也应该检查 fseek 函数的返回值是否为 0,以确保文件定位成功。
4. 在调用 fwrite 函数时,应该先检查 fwrite 函数的返回值,以确保数据写入成功。
5. 在结构体中,出生日期的数据类型应该使用 long 或者 unsigned long,而不是 int。
以下是修改后的代码:
```
#include <stdio.h>
struct stu {
int num;
char sex;
unsigned long birth;
} stu_[3] = {{1, '1', 427}, {2, '2', 414}, {3, '2', 1212}};
struct stu *p = stu_;
int main() {
FILE *fp;
fp = fopen("C:\\Users\\张px\\Desktop\\input.txt", "w+");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
if (fseek(fp, 0, SEEK_END) != 0) {
printf("Failed to seek file.\n");
fclose(fp);
return 1;
}
if (fwrite(p++, sizeof(struct stu), 3, fp) != 3) {
printf("Failed to write data.\n");
fclose(fp);
return 1;
}
fclose(fp);
return 0;
}
```
阅读全文