читать в два раза из текстового файла (используя C / Visual Studio) - PullRequest
0 голосов
/ 05 июля 2011

У меня есть текстовый файл с числами: два числа в каждой строке, разделенные пробелом. Каждая пара чисел представляет (x, y) координату. Я пытаюсь написать это на C, потому что это язык, который я знаю, но я работаю в Visual Studio 2010. У меня есть следующий код:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>

#define MAXPOINTS 10

int _tmain(int argc, _TCHAR* argv[])
{
    double points [MAXPOINTS];

    int i;
    for (i = 0; i < MAXPOINTS; i++) {
        points[i] = 0.0;
    }

    FILE* pFile;
    pFile = fopen ("points.txt","r");

    if (pFile == NULL)
    {
        printf("Could not open file\n");
        return 0;
    }

    rewind (pFile);

    i = 0;
    while (fscanf(pFile, "%f %f", &points[i], &points[i + 1]) == 2) {
        printf("blah\n");
        i = i + 2;
    }

    for (i = 0; i < MAXPOINTS; i++) {
        printf("[%d] = %f\n", i, points[i]);
    }

    fclose (pFile);
    return 0;
}

Вывод:

blah
blah
blah
[0] = 0.000000
[1] = 0.000000
[2] = 0.000000
[3] = 0.000000
[4] = 0.000000
[5] = 0.000000
[6] = 0.000000
[7] = 0.000000
[8] = 0.000000
[9] = 0.000000

Где у points.txt три строки:

100 200
300 400
500 500

Я не могу понять, почему числа не считываются в массив.

Есть идеи?

1 Ответ

2 голосов
/ 05 июля 2011

% f формат требует, чтобы указатель плавал, а вы даете указатель на double.

...