我正在尝试将一些数据fscanf到一个结构中,编译器可以使用代码,但是当我尝试打印它时,它甚至不打印文本。这是代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct xy {
unsigned x;
unsigned y;
} myStruct;
int main(void)
{
FILE *myFile;
myStruct *xy;
myFile = fopen("filename.txt", "rb");
if(fscanf(myFile, "%u %u", &xy->x, &xy->y) != 2)
fprintf(stderr, "Error!"); exit(1);
fclose(myFile);
printf("x: %u, y: %u\n", xy->x, xy->y);
return 0;
}
我需要为此分配空间吗?如果必须的话,请你告诉我该怎么做?
答案 0 :(得分:4)
你那里没有结构。只是一个结构上的指针。
您可以使用malloc()
为其分配内存,也可以声明结构localy:
myStruct xy;
在此示例中无需使用malloc。
修正:
#include <stdio.h>
#include <stdlib.h>
typedef struct xy {
unsigned int x;
unsigned int y;
} myStruct;
int main(void)
{
FILE *myFile;
myStruct xy;
if ((myFile = fopen("filename.txt", "rb")) == NULL)
return (1);
if(fscanf(myFile, "%u %u", &xy.x, &xy.y) != 2)
{
fprintf(stderr, "Error!");
return (1);
}
fclose(myFile);
printf("x: %u, y: %u\n", xy.x, xy.y);
return 0;
}