Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Не удаётся прочитать файл fscanf //C++

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Не удаётся прочитать файл fscanf //C++
Имя
Сообщение << Старые топики   Новые топики >>
Не удаётся прочитать файл fscanf //C++ - 2008-11-30 16:22:42.516666   
t3rmin41

Сообщений: 245
Оценки: 0
Присоединился: 2007-11-12 14:06:01.393333
Есть файл (который создаётся вводя построчно 2 числа через пробел) Получается 2 столбика. Надо сохранить в отдельный файл только второй столбик. Я кое-что написал, но fscanf почему-то не удаётся прочитать. Может кто знает, в чём проблема?

#include &lt;assert.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; struct data { &nbsp;float x; &nbsp;float y; }; main() { &nbsp;FILE * fp; &nbsp;float p,q,r; &nbsp;int i=0; &nbsp;int n=1; &nbsp;clrscr(); &nbsp;fp=fopen("data-fl.dat","w+"); &nbsp;if (fp==NULL) &nbsp;{ &nbsp;&nbsp;&nbsp; printf("Cannot create file\n"); &nbsp;&nbsp;&nbsp; return 0; &nbsp;} &nbsp;data *temp; &nbsp;data *array; &nbsp;temp = new data [n]; &nbsp;assert(temp!=0); &nbsp;array = new data [n]; &nbsp;assert(array!=0); &nbsp;printf("Insert float numbers. To end press 'e'\n"); &nbsp;for (;;) &nbsp;{ &nbsp;&nbsp;&nbsp; p = scanf("%f %f\n",&amp;q,&amp;r); &nbsp;&nbsp;&nbsp; if (p==0) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;break; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; fprintf(fp,"%f %f\n",q,r); &nbsp;} &nbsp;fclose(fp); &nbsp;fp=fopen("data-fl.dat","r"); &nbsp;if (fp==NULL) &nbsp;{ &nbsp;&nbsp;&nbsp; printf("Cannot open the file\n"); &nbsp;&nbsp;&nbsp; return 0; &nbsp;} &nbsp;while (!feof(fp)) &nbsp;{ &nbsp;p=fscanf(fp,"%f %f\n",&amp;q,&amp;r); &nbsp;&nbsp;&nbsp; if (p!=2) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;break; &nbsp;&nbsp;&nbsp; } &nbsp;array[i].x=q; &nbsp;array[i].y=r; &nbsp;i++; &nbsp;n++; &nbsp;&nbsp;&nbsp; for (int j=0; j&lt;i; j++) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;temp[j]=array[j]; &nbsp;&nbsp;&nbsp; } &nbsp;delete []array; &nbsp;array = new data [i]; &nbsp;assert(array!=0); &nbsp;&nbsp;&nbsp; for (j=0; j&lt;i; j++) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;array[j]=temp[j]; &nbsp;&nbsp;&nbsp; } &nbsp;delete []temp; &nbsp;temp = new data [i]; &nbsp;assert(temp!=0); &nbsp;} &nbsp; fp=fopen("ndatfl.dat","w+"); &nbsp;if (fp==NULL) &nbsp;{ &nbsp;&nbsp;&nbsp; printf("Cannot create file\n"); &nbsp;&nbsp;&nbsp; return 0; &nbsp;} &nbsp;for(i=0; i&lt;(n-1); i++) &nbsp;{ &nbsp; fprintf(fp,"%f\n",array[i].y); &nbsp;} &nbsp;delete []array; &nbsp;delete []temp; &nbsp; &nbsp;fclose(fp); &nbsp;getch(); &nbsp;return 0; }
Post #: 1
RE: Не удаётся прочитать файл fscanf //C++ - 2008-12-04 13:54:11.176666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Для начала попробуй во всех *scanf'ах не писать пробелов. То есть писать что-то в стиле:scanf ("%f%f", &a, &b); Если ты напишешь там пробел, то scanf откажется читать если пробела не будет (например если вместо пробела окажется перевод строки). Если же там будут лишние пробелы, то %f их просто съест.
Post #: 2
RE: Не удаётся прочитать файл fscanf //C++ - 2008-12-04 15:32:21.520000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
В BC 3.1 есть баг, из-за которого не получается читать scanf-ом в поля структур с типами float | double | long double. Это так, между дела..
Post #: 3
RE: Не удаётся прочитать файл fscanf //C++ - 2008-12-04 20:57:57.456666   
t3rmin41

Сообщений: 245
Оценки: 0
Присоединился: 2007-11-12 14:06:01.393333
quote:

ORIGINAL: _SaZ_

В BC 3.1 есть баг, из-за которого не получается читать scanf-ом в поля структур с типами float | double | long double. Это так, между дела..


А это точно? Потому что у меня как раз такой компилятор
Post #: 4
RE: Не удаётся прочитать файл fscanf //C++ - 2008-12-04 23:58:05.710000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Выкинь его. Я тут познакомился с Dev-C++: поделие глюковатое, но зато позволяет с минимальными трудозатратами получить в венде работоспособную IDE с современными компиляторами C/C++ (хоть gcc там и 3.4, а не 4.x, но это лучше чем bcc.exe двадцатилетней давности ;)), и вполне подходящую для написания/отладки такого рода программ.
Post #: 5
RE: Не удаётся прочитать файл fscanf //C++ - 2008-12-05 02:24:21.700000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: t3rmin41

quote:

ORIGINAL: _SaZ_

В BC 3.1 есть баг, из-за которого не получается читать scanf-ом в поля структур с типами float | double | long double. Это так, между дела..


А это точно? Потому что у меня как раз такой компилятор


Точно
Post #: 6
RE: Не удаётся прочитать файл fscanf //C++ - 2008-12-05 03:42:13.230000   
9off

Сообщений: 696
Оценки: 0
Присоединился: 2008-10-16 07:09:00.173333
quote:

Выкинь его. Я тут познакомился с Dev-C++
не знаю мне отчаянно не нравится ДЕВКА Визуал студио помоему немного лучше
Post #: 7
RE: Не удаётся прочитать файл fscanf //C++ - 2008-12-05 09:51:13.010000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: 9off
quote:

Выкинь его. Я тут познакомился с Dev-C++
не знаю мне отчаянно не нравится ДЕВКА Визуал студио помоему немного лучше


Я сказал "с минимальными трудозатратами". Dev-C++ не надо искать в крякнутом варианте. Первая же ссылка в гугле ведёт на официальный сайт, откуда Dev-C++ скачивается на ура. Не надо потом применять кряки или 352 раза нажимать кнопку ignore при установке, чтобы IDE заработал. А если есть модное нынче стремление использовать исключительно лицензионный софт, то не надо зарабатывать денег на лицензию ;)

Нравиться/не нравиться – это уже что-то сбоку. Дарёному коню в зубы не смотрят. Мне тоже не нравится. Его текстовый редактор по сравнению с emacs'ом – убожество. Его возможности по отладке называть возможностями можно лишь в качестве издёвки. Его глючность периодически просто бесит. Но если сравнить Dev-C++ и Borland C++ 3.1, то сравнение однозначно в пользу Dev-C++.

ps. кстати, я тут между делом накатал прожку на C, которая позволяет прозрачно писать в Dev-C++ программы, которые printf'ами выводят в консоль русские буковки, а не кракозяблики. Никаких CharToOEM, никакой смены настроек консоли.
Post #: 8
RE: Не удаётся прочитать файл fscanf //C++ - 2008-12-05 11:28:29.330000   
9off

Сообщений: 696
Оценки: 0
Присоединился: 2008-10-16 07:09:00.173333
quote:

Но если сравнить Dev-C++ и Borland C++ 3.1, то сравнение однозначно в пользу Dev-C++.
тогда да ДЕВАХА не чё просто меня от неё отталкивает что лабы в универе на нём пишем а по собственному опыту я уже понял в наших образовательных заведениях хорошего ПО мало ил практически нет…а если есть то только теоретически
Post #: 9
RE: Не удаётся прочитать файл fscanf //C++ - 2008-12-05 13:31:04.483333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Пиши в msvs. А у девахи, если будет возмущаться, спроси: "мы изучаем язык программирования C++ или среду разработки BC3.1?".
Post #: 10
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Не удаётся прочитать файл fscanf //C++







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.