Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Неправильно отображаются данные при вводе их из текстового файла! (http://forum.oszone.net/showthread.php?t=62381)

Sox 08-03-2006 14:19 415227

Неправильно отображаются данные при вводе их из текстового файла!
 
Возник такой вопрос: имеется программа
Код:

      # include <stdio.h>
     
      struct synna {
      int A[100];
      int *K;
      int P[100];
      };
      int main ()
      {
      struct synna temp, *t=&temp;
      FILE *data;
      if (( data=fopen( "Insert.txt", "r")) == NULL )
      {
        printf("File could not be opened!\n");
      }
      else {
        fscanf(data, "%d %d %d", t -> P, &t -> K, t -> A );
        printf("day: %d month: %d year: %d\n", temp.P, &temp.K, temp.A);
      while (!feof( data ) ) {
      printf( "%-10d%-13d%d\n", temp.P, &temp.K, temp.A);
      fscanf(data, "%d %d %d\n", temp.P, &temp.K, temp.A);
      }
      fclose( data );
      }
      }

Она должна считывать данные из файла Insert.txt данные (это дата 1 1 1901), запоминать и выводить на печать. Но..... она это делает в каком-то странном виде. Все числа должны быть в целочисленном формате в этой дате, т.е. %d. Но она неправильно отображает. Вместо 1 1 1901 (такое значение проставлено в файле Insert.txt) она выводит на экран:
day: -1073747708 month: -1073747712 year: -1073748112, только если представить и сохранить данные в символьном формате, т.е. все данные как тип char %s , тогда нормально отбражает. Но этого нельзя делать, потому что в дальнейшем эти данные должны использоваться в вычислениях... пробовал менять %d на %i, то же самое....


ivank 08-03-2006 16:41 415257

Код:

struct synna
{
      int A, K, P;
};

//...

fscanf(data, "%d %d %d", &temp.P, &temp.K, &temp.A );

Ниже ещё надо printf со scanf местами поменять. И параметры у scanf'а аналогично исправить. Ещё не понятно зачем понадобилось заводить структуру и почему такие дикие отступы.

Sox 08-03-2006 16:58 415260

Ну потому что это часть задания, в котором ведется работа со структурой, потому и заведена структура. :)

Sox 08-03-2006 17:23 415272

Нет, не то. То же самое выходит.


Время: 16:21.

Время: 16:21.
© OSzone.net 2001-