[英]Why does this pointer to pointer two dimensional array assign new int like this
[英]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.