C++文件讀取時有一個bug,就是使用eof()判斷文件結尾並不准確,最后一行會重復讀取一次,可采用以下方法避免重復讀取:
while (!inFile.eof()) { inFile >> …… >>; inFile.get(); // 讀取最后的回車符 if(inFile.peek() == '/n') break; }
C語言多讀一行,解決方案如下:逐行讀取,判斷每一行是否獲取成功,獲取成功則讀取,否則中斷
FILE *fp = fopen(fileName.c_str(), "r"); if (fp) { while (!feof(fp)) { char line[512]; if (!fgets(line, 511, fp)) { break; } sscanf(line, "%lf%lf%lf", &pot.x, &pot.y, &pot.z); tempPt.push_back(pot); if (pot.x > maxX) maxX = pot.x; if (pot.x < minX) minX = pot.x; if (pot.y > maxY) maxY = pot.y; if (pot.y < minY) minY = pot.y; if (pot.z > maxZ) maxZ = pot.z; if (pot.z < minZ) minZ = pot.z; } fclose(fp);