現在、テキストファイルからそれぞれの行にそれぞれ不明な倍数のデータを取り込むプログラムを作成しています。これらの要素を配列に読み込む必要がありますが、動作していません。私のプリントループは動作しますが、ゼロだけが出力されます。私はたくさんのことを試してきて、ここに来る前に多くを見ました。これは私のコードです。あまりにも多くの数字がファイルにあった場合のコードもチェックしていなかった以外fscanf()
結果のfscanfを使用してC言語の倍精度を読み取る方法
#include <stdio.h>
#include <stdlib.h>
int main()
{
//Open an file to read from
FILE *file;
file = fopen("data.txt","r");
if (file == NULL)
{
printf("File not found.");
return -1;
}
//Count the number of lines in the input file
int numLines = 0; //CHANGE TO 1 ???
int ch;
do
{
ch = fgetc(file);
if (ch == '\n')
numLines++;
} while (ch != EOF);
//Put all of the data read into an array;
double input[numLines];
int i = 0;
while ((fscanf(file, "%lf\n", &input[i])) == 1)
i++;
//Close the file
fclose(file);
//Test printing elements of array
for (i = 0; i < numLines; i++)
printf("%lf\n", input[i]);
return 0;
}
ファイルのポインタを数えた後に[rewind'](https://linux.die.net/man/3/rewind)する必要があります。そうしないと、ファイルの終わりにいます実際の入力データを読み取ろうとします。 –
'%lf"( '"%lf \ n "'ではなく)のような書式を使用して、末尾の空白をスキップします。 – Jens
'printf("%f \ n "、input [i]);' 'l'は影響を与えません。浮動小数点数のためのprintfフォーマット指定子があるので、自動的に倍精度化されます。 – bruceg