簡體   English   中英

Fscanf給出分段錯誤

[英]Fscanf giving a segmentation fault

我花了幾個小時試圖弄清楚這段代碼出了什么問題。 我嘗試過將代碼放入feof while循環中,以及將fscanf移出循環,以使其僅運行一次。 即使文件中的數據有效,這些更改仍然會引發分段錯誤。

struct student *temp = (ident*) malloc (sizeof(ident));
while(fscanf(file1, "%s %s %d %f", temp->fname, temp->lname, temp->id, temp->gpa) != EOF) {
    if(head == NULL)
        head = temp;
    else {
        struct student *traverse = head;
        while(traverse->next != NULL)
            traverse = traverse->next;
        traverse->next = temp;
        printf("added");
    }
}

以下是該結構:

struct student{
char fname[256];
char lname[256];
unsigned int id;
float gpa;
struct student *next;
};

文本文件上一行的示例:

約翰·多伊1 3.6

約翰·史密斯3 2.4

您必須傳遞指向值的指針,而不是傳遞給fscanf的值(請注意, & temp- &temp->id&temp->gpa中的&temp->id &符號; char[] -types lnamefname自動衰減為指針):

while(fscanf(file1, "%s %s %d %f", temp->fname, temp->lname, &temp->id, &temp->gpa) != EOF) {

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM