逐字逐行读取文件

我有一个文件,每行有两个未知长度,用空格分隔。 数字可以是任何大小,最多500个数字,所以我需要逐个字符地读取它并将其存储到整数数组中。 我试过这样的事情:

while(fgets(line, sizeof line, fp) != NULL) { // assuming buff handles the line lenght //read each character until '' // store it //read each character until '\n' // store it } 

我尝试使用fgetc读取直到”和’\ n’,但它没有用。 任何建议将不胜感激。

你不应该一次读一个字符。 相反,一次读一行:

 int num1, num2; while (fscanf(fp, "%d %d\n", &num1, &num2) == 2) { // do something with num1 and num2 } 

编辑:好的,现在你说这些数字可能超级巨大。 没问题,只需使用libgmphttps://gmplib.org/manual/I_002fO-of-Integers.html

例如:

 mpz_t num1, num2; mpz_init(num1); mpz_init(num2); while (mpz_inp_str(num1, fp, 10) && mpz_inp_str(num2, fp, 10)) { // do something with num1 and num2 } 

GMP为您提供无限精度,因此您可以存储任意长度的数字,并对它们进行数学运算。

如果你采用long double格式,我相信你可以处理几乎任何合理的“大小”,除此之外你不必担心“处理行长度”。

  long double num1, num2; while (fscanf(fp, "%Lf %Lf\n", &num1, &num2) == 2){ printf("%Lf\t%Lf\n", num1, num2); //copy the numbers into whichever appropriate array }