我是一个初学者在数据结构与C,我采取了C编程,但我只触及了一点点的结构在这门课上,我没有跟上它。
无论如何,我正在尝试做一个程序,它将从一个文件中读取数据到一个结构数组中,并打印出您填充的数组的内容。我需要帮助来解决这个问题......老实说,我也不太确定我是否做得正确......:/
任何帮助都非常感谢,并提前感谢你!:)
这是我目前所尝试的
下面是我的代码:
仅供参考-我尝试打开的文件是DataFile.txt
#include<stdio.h>
#include <stdlib.h>
#define SIZE 10
#define ARRAY_SIZE 30
//Struct contains 3 fields, name, age, salary
typedef struct
{
char name[SIZE];
int age;
int salary;
} data;
data a[ARRAY_SIZE];
FILE * fp = fopen("DataFile.txt", "r");
if (fp == NULL)
{
printf("Error %s.\n", strerror(errno));
exit(1);
}
int GetData()
{
int i = 0;
fscanf(fp, "%s", a[i].name);
while(fp && i<ARRAY_SIZE)
{
fscanf(fp, "%d", &a[i].age);
fscanf(fp, "%d", &a[i].salary);
i++;
}
return i;
}
void ShowData( int records_read)
{
//Print text file data on screen
for(int i=0;i<records_read;i++)
{
printf("%s %d %d\n", a[i].name, a[i].age, a[i].salary);
}
}
int main()
{
char name[256];
int i = 0;
int records_read;
//Call the method, getData
i = GetData();
//Prompt and read input from the user
printf("Pick a number from 1 to 10:");
scanf("%d", &records_read);
//Call the method, showData
ShowData(records_read);
fclose(fp);
return 0;
}
如果我不把这部分代码放进去,程序就能工作:
FILE * fp = fopen("DataFile.txt", "r");
if (fp == NULL)
{
printf("Error %s.\n", strerror(errno));
exit(1);
}
但是输出只是一个零的列表。
1条答案
按热度按时间vh0rcniy1#
快速回答:首先,尝试将
FILE * fp = fopen("DataFile.txt", "r");
拆分为两部分,一部分是变量声明FILE * fp = NULL;
,另一部分是赋值表达式fp = fopen("DataFile.txt", "r");
,然后将变量声明部分保留在所有函数之外,而将赋值部分和if语句if (fp == NULL){...}
都移到函数GetData()
中,代码可能在这种情况下工作。