gpt4 book ai didi

c - 使用 "fseek"和 "rewind"函数时出错

转载 作者:行者123 更新时间:2023-11-30 17:33:18 25 4
gpt4 key购买 nike

我的 C 作业遇到了麻烦。程序的目标是从有关某些建筑物的文本文件中获取一些数字,并使用这些数字计算城市的轮廓作为写入文本文件中的角点,在第一个文本文件中,数字由三个制表符分隔的部分写入,第一个数字是起始坐标,第二个数字是建筑物的高度,第三个数字是建筑物的宽度。例如“24 7 6”表示建筑物的角点为 (24,0)、(24,7)、(30,7)、(30,0)。我开始研究这个程序,但遇到了一些问题,所以我决定部分地制作它,所以在下面的代码中,我尝试从该文本文件中获取数字,将它们发送到动态内存部分,然后打印它们屏幕上。但是当我运行这段代码时,它启动和停止时出现系统错误,错误代码是“c0000005”,我猜这是由“fseek”或“rewind”引起的,因为当我删除这些函数时,程序运行不正常但不运行报错,问题出在哪里?

Buildings.txt是这样的:

24 7 4
5 7 11
26 9 7
9 5 5
3 12 4
33 9 6
37 5 7
12 9 10
273 64 3

#include <stdio.h>
#include <stdlib.h>

typedef struct building{
int start, height, width;
}BUILDING;

int main(){

FILE *buildingsptr;
char karakter;
int satir=0, i;
BUILDING *ptr;
double sum;
buildingsptr=fopen("buildings.txt","r");

while((karakter=fgetc(buildingsptr)) != EOF){

if(karakter=='\n') satir++;
}

ptr=(BUILDING*) malloc(satir*sizeof(BUILDING));


printf("%d\n", ftell(buildingsptr));
//rewind(buildingsptr);
fseek(buildingsptr, 0L, SEEK_SET);
printf("%d\n", ftell(buildingsptr));

for(i=0; i<satir; i++){
fscanf(buildingsptr, "%p %p %p", ptr->start, ptr->height, ptr->width);
ptr++;
}

printf("%d %d %d", ptr->start, ptr->height, ptr->width);


getch();
return 0;
}

最佳答案

问题代码中有很多需要考虑的事情。这是您当前的问题:

由于您正在从 buildings.txt 读取整数(而不是指针);更改此:

fscanf(buildingsptr, "%p %p %p", ptr->start, ptr->height, ptr->width);

对此:

fscanf(buildingsptr, "%d %d %d", &ptr->start, &ptr->height, &ptr->width);

关于c - 使用 "fseek"和 "rewind"函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23791332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com