Lesen einer Daten-Datei und speichern in ein array von Strukturen

Bin ich zu Lesen versuchte, eine Daten-Datei und zum speichern der Informationen in ein array natürlich Strukturen (oder ein array von Zeigern auf Kurs-Strukturen). Diese Zuordnung erfordert die Aufrechterhaltung einer Datenbank mit einem array von Zeigern auf die studentischen Strukturen.

Ich bin immer ein segmentation fault, wenn ich versuche zu Scannen, die Daten in das array. Wie kann ich richtig lagern, die Informationen aus der Datei in das array?

#define SIZE        30
#define fieldLength 300
#define diskFile    "diskFile.dat"
#define courseFile  "course.dat"

struct student
{
    char name[fieldLength];
    int age[fieldLength]; 
    char course1[fieldLength];
    char course2[fieldLength];
    char remarks[fieldLength];      
}*sp[SIZE];

struct course 
{ 
    char name[fieldLength];
    char number[fieldLength];
    char instructor[fieldLength];
    char date[fieldLength];
    char starting[fieldLength];
    char ending[fieldLength];
    char location[fieldLength]; 
};

int main(int argc, char *argv[])
{
    int i, count;

    struct course course_arr[SIZE]; //an array of ten structs

    FILE * in; /*FILE pointer to do the stream IO*/
    in = fopen(courseFile, "r+");

    count = 0;
    while ((fscanf(in, "%s %s %s %s %s %s %s", 
                       &course_arr[count].name, 
                       &course_arr[count].number,
                       &course_arr[count].instructor, 
                       &course_arr[count].date, 
                       &course_arr[count].starting, 
                       &course_arr[count].ending, 
                       &course_arr[count].location)) != EOF)
    {       
        count++;        
    }

    /* print the menu */
    printf("\n-----------------------------------------------------------------\n");
    printf("|\t%-20s","(N)ew record");
    printf("%-20s","(U)pdate record");
    printf("Swa(p) records\t|\n");
    printf("|\t%-20s","(S)ort database");
    printf("%-20s","(C)lear database");
    printf("(D)isplay db\t|\n");

    printf("|\t%-20s","(L)oad disk");
    printf("%-20s","(W)rite disk");
    printf("(E)mpty disk\t|\n");

    printf("|\t%-20s", "(V)iew courses"); 
    printf("%-20s","(R)emove record");
    printf("(Q)uit   \t|\n");
    printf("-----------------------------------------------------------------\n");
    printf("choose one: ");
  • Puffer-überlauf ist eine Reale Sache. Lesen Sie über es.
InformationsquelleAutor Sophie | 2013-07-13
Schreibe einen Kommentar