簡體   English   中英

為什么 sscanf 只讀取兩行帶有指針的指針?

[英]Why does sscanf reads only two lines with pointer to pointer?

我有一個包含 10 行的文件,每行中都有一個名稱、一個 ID 和一個年齡,以空格分隔。 問題是當使用 fgets 和 sscanf 讀取這個文件時,它會在嘗試讀取超過 2 行時返回一個 seg 錯誤。

typedef struct Person
{
    char t;
    long i;
    float a;
} Person;



*arrPersons = (Person*)malloc(10 * sizeof(Person));

int assignInputPeople(Person **arrPersons,  FILE *inputPeople)
{
    int counter = 0;
    char fileLine[344];
    long ID;
float ageF;
 while (fgets(fileLine, 344, inputPeople) != NULL)
    {
        sscanf(fileLine, "%s %s %s", arrPersons[counter]->name,&ID)
   
    
}

我為我的數組創建了一個指向指針的指針,以便我可以在其他函數中修改它,比如上面的這個。

如果您在main() function 中將 arrPersons 的地址作為arrPersons assignInputPeople() ) function 的參數arrPersons傳遞, arrPersons[counter]->name是錯誤的,因為 arrPersons 指向的內容只有一個arrPersons的空間,所以當counter不為0時超出范圍。

在這種情況下,它應該是(*arrPersons)[counter].name

暫無
暫無

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

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