我想從一個文件,該文本讀取裏面漂浮,直到新生產線的隨機數:掃描用C
˚F502 601 596 465 464
˚F597 599 600 598
˚F602 591 596 601
˚F588 565 548 260 62 61 595
˚F583 595 61 558 561
˚F237 241 471
在每一行中,有一個f隨後是隨機數量的浮標。我希望能夠在f之後獲得數字並將它們存儲在一系列浮點結構中。如果每條線上有三個浮點數,我寫了解析文本文件的代碼,但現在如果有隨機數量的浮點數(最多13個浮點數),我會指示它執行此操作。基本上我現在有三個花車在每一行代碼如下:
struct faces {
float p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12;
}
struct faces eFace[100];
FILE *fp;
char buff[128];
int fCount = 0;
fp = fopen("text.txt", "r");
if (fp == NULL)
printf("Can't open file");
else {
while (fgets(buff, sizeof(buff), fp) != NULL) {
if (buff[0] == 'f') {
sscanf(buff, "f %f %f %f", &eFace[fCount].p1, &eFace[fCount].p2, &eFace[fCount].p3);
fCount++;
}
}
}
fclose(fp);
}
什麼是修改我的代碼的最佳方式,以便它需要每一個浮動(最多13輛花車)在「f」之後直到一個新行並將它們存儲在我創建的結構數組中?我很感激任何幫助,如果您需要更多信息,請告訴我!
注:我總是要檢查是否符合一個f開始。
在C++中,你可能想要將一行讀入一個字符串,創建一行'stringstream',然後讀一個字符後跟一個'std :: vectorstream從字串流(並忽略字符串)。 –
抱歉,這僅適用於C語言。我刪除只是刪除標記爲C++ –
在while循環的sscanf(「%F」,...),並檢查什麼sscanf的回報,如果 - 0,那麼你知道你的閱讀是不是成功的,所以你;再或許在下一線) – Ardel