PDA

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


Sox
08-03-2006, 14:19
Возник такой вопрос: имеется программа
# 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, то же самое.... http://www.forum.oszone.ru/images/smilies/new/sad.gif

ivank
08-03-2006, 16:41
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
Ну потому что это часть задания, в котором ведется работа со структурой, потому и заведена структура. :)

Sox
08-03-2006, 17:23
Нет, не то. То же самое выходит.




© OSzone.net 2001-2012