0
對C很新穎,我試圖弄清楚(對於任務)如何正確使用結構和函數。 特別是,我遇到了麻煩,如何從函數傳遞結構數組。傳遞函數結構數組
函數應該從文件中獲取數據並將其輸入到數組中。輸入文件具有以下數據:的Al 比爾克拉克迪安埃倫
我調用該函數後,我想是能夠在查看的數組值主要功能。
我不認爲我正確地傳遞了結構,但不知道我要出錯的地方。 有什麼建議嗎?謝謝。
這裏是我的代碼的嘗試:
// Input file into array
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int number;
char name[30];
} Name;
#define SIZE 5
// function prototypes
int loadName(char *file, Name N[]);
// function main begins program execution
int main(void)
{
char file[ 30 ]; // file name
Name N[ SIZE ]; // array to store names
size_t i, j=0; // counter
// check read function opens file correctly
if (-1 == (i = loadName (file, N))) {
puts("Employee file could not be opened");
} // end load if
printf("\n\nCheck for names in main function\n\n");
for (j=0; j<i; ++j) {
printf("%8d%18s\n", N[j].number, N[j].name);
}
return 0;
free(N);
}
// load values from name file
int loadName(char *file, Name N[])
{
FILE *inPtr; // inPtr = input file pointer
size_t i = 0; // counter
// fopen opens file. Exit program and return -1 if unable to open file
if ((inPtr = fopen("name.txt", "r")) == NULL) {
return -1;
} // end if
else {
printf("Employee Number Employee Name\n");
// read name from file
do {
N = (Name*)malloc(100);
fscanf(inPtr, "%d%s", &N[i].number, &N[i].name);
printf("%8d%18s\n", N[i].number, N[i].name);
i++;
} while (!feof(inPtr));
} // end else
fclose(inPtr); // fclose closes the file
return i; // return i after successful for loop
} // end function loadname