Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2008, 09:40   #11
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

ну проще всего не мучаясь второй файл создать и туда переписывать (с проверкой на 0)
или же требуется все в одном файле организовать?
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 24.11.2008, 21:44   #12
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

ЛУчше в одном, конечно в условии не сказано, но я знаю, что они хотят - на паскале сотню раз проходил такое))) А вот в си "встрял"(((
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 25.11.2008, 08:32   #13
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

ну тогда попробуй все прочитать, сформировав некий массив (или строку) а потом записать его в файл
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 25.11.2008, 09:37   #14
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Ну а почему не работает fseek, точнее я не могу правильно работать, ведь стоит вспомнить паскаль, где
seek(f,7);
Write(f,k);
И все 8 элемент перезаписан...
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 25.11.2008, 10:04   #15
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

fseek смещает не на количество позиций а на количество байтов

int fseek(FILE *stream, long offset, int whence);

fseek sets the file pointer associated with stream to a new position that is offset bytes from the file location given by whence. For text mode streams offset should be 0 or a value returned by ftell.
Учиться, учиться и еще раз учиться

Последний раз редактировалось Ламер_001; 25.11.2008 в 10:08.
Ламер_001 вне форума Ответить с цитированием
Старый 25.11.2008, 16:02   #16
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Ну это я прочитал в справке) Поэтому и делаю так: fseek(f, -2, SEEK_CUR); то есть смещаю на 2 байта назад с текущей позиции, допустим 1 элемент 0, я его считал, проверяю и смещая на 1 число назад, то есть на int 2 байта, то есть снова указатель на 1 элемент и пишу туда новое значение, но от этого содержимое файла не меняется...
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 25.11.2008, 16:34   #17
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

int 4 байта занимает в с++
Учиться, учиться и еще раз учиться

Последний раз редактировалось Ламер_001; 25.11.2008 в 16:42.
Ламер_001 вне форума Ответить с цитированием
Старый 25.11.2008, 16:41   #18
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Цитата:
int 4 байта занимает в с++
Не всегда. Стандарт этого не обещает. Надо юзать sizeof.
still_alive вне форума Ответить с цитированием
Старый 25.11.2008, 16:52   #19
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Цитата:
Сообщение от Ламер_001 Посмотреть сообщение
int 4 байта занимает в с++
Ну это я делаю в turbo с Попробую через sizeOf
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 25.11.2008, 17:54   #20
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Чтобы не мучаться выложу весь код, который на вид рабочий, но неверно все делает:
Код:
#include <stdio.h>;
#include <conio.h>;
main()
{
 int max, min, pr;
 FILE *f;
 clrscr();
 printf("Creating files, 777 - cancel\n");
 f = fopen("in.dat","wb+");
 scanf("%d",&pr);
 while (pr != 777)
 {
  putw(pr, f);
  scanf("%d", &pr);
 }
 rewind(f);
 min = getw(f);
 max = min;
 printf("Not modifed file\n");
 while (! feof(f))
 {
  pr = getw(f);
  printf(" %d ",pr);
  if (min > pr) min = pr;
  if (max < pr) max = pr;
 }
 pr = min * max;
 rewind(f);
 printf ("\nPr = %d", pr);
 printf("\nsizeof(int) = %d \n",sizeof(int));
 while (!feof(f))
 {
  min = getw(f);
  printf(" %d ",min);/*специально для того чтобы было видно что -1 выводятся постоянно*/
  if (min == 0)
  {
   fseek(f, -sizeof(int), SEEK_SET);
   putw(pr,f);
  }
 }
 printf("\n Modifide file\n");
 rewind(f);
 while (! feof(f))
 {
  pr = getw(f);
  printf(" %d ", pr);
 }
 fclose(f);
 getch();
}
В общем в начале происходит заполнение файла целыми числами, потом поиск минимума и максимума + вывод, потом нахождение произведения, потом замена нулевых на произведение и потом вывод измененного файла, но тут проблемы такие:
Как только введено 777 перестает добавлять но в конец файла пишет -1, далее при выводе -1 есть, далее при замене, как только встречается первый ноль постоянно выводит -1 и все зацикливается... Помогите пожалуйста - бьюсь уже третий день... Вот, что значит учиться по справке... И когда у одного решения много способов... Это не паскаль
Как я понию -1 возвращает getw(f) - когда неудачное чтение?
Страх это слабость и потому, кто испугался уже побежден.

Последний раз редактировалось Mixasik; 25.11.2008 в 17:58.
Mixasik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Позиция курсора Arkuz Общие вопросы Delphi 2 11.10.2008 01:39
поиск в файле Elm0 Паскаль, Turbo Pascal, PascalABC.NET 14 07.06.2008 22:41
Позиция курсора Манжосов Денис :) Помощь студентам 3 25.04.2008 16:56
Позиция курсора в TMemo Air Общие вопросы Delphi 6 19.02.2008 10:28
Позиция формы wwww Общие вопросы Delphi 2 16.12.2007 16:41