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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2009, 19:43   #1
Stiff Master
 
Регистрация: 24.03.2009
Сообщений: 3
По умолчанию Модульная программа на С работа с файлами

Цель работы заполнение и вывод таблицы в файл. Есть 3 составных.Я создал проект он скомпилировался создался екзешник но когда запускаю то оно не может создать файл.

1 файл

Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include "laba16.h"
#include "laba16-2.h"
#include "laba16-1.h"


int main(int an, char *av[]) {
 MON x;
 int op;
 int num;
 char eoj;
  if (an<2) {
    printf("ERROR !!! \n");
    exit(0);
    }

  initf(av[1]);
  for (eoj=0; !eoj; ) {

    printf("1 - Create item\n");
    printf("2 - Delete item\n");
    printf("3 - View item with number\n");
    printf("4 - View all items\n");
    printf("0 - Exit\n");
    printf("Enter.. >");

    scanf("%d",&op);
    switch(op) {
      case 0:
	eoj=1;
	break;
      case 1:
	if (ent_data(&x)>=0)
	   f_add(&x);
	break;
      case 2:
	if (!fcheck_number(num=get_number()))
	  fdel_item(num);
	break;
      case 3:
	if (!fcheck_number(num=get_number()))
	  fshow_1(num);
	break;
      case 4:
	fshow_all();
	break;
      default:
	printf("Error operationя\n");
	break;
      }
    if (op) {
      printf("Press any button\n");
      getch();
      }
    }

  commit();

  return 0;
  }
2 файл
Код:
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <stdlib.h>
#include "laba16.h"
#include "laba16-2.h"

static int file;


Скорее всего ошибка где то тут 
void initf(char *fname) {
  if (access(fname,0)<0) {

    _fmode=O_BINARY;
    if ((file=creat(fname,S_IREAD|S_IWRITE))<0) {
      printf("Can't create file %s\n",fname);
      exit(0);
      }
    }
  else
    if ((file=open(fname,O_RDWR|O_BINARY))<0) {
      printf("Can't open file %s\n",fname);
      exit(0);
      }
}


void commit() {
  close(file);
}


void f_add(MON *a) {
  lseek(file,0,SEEK_END);
  write(file,a,SMON);
}


int fcheck_number(int n) {
 long nn;
  if (n<1) {
    printf("min number : 1\n");
    return -1;
    }
  nn=lseek(file,0,SEEK_END)/SMON;
  if (n>nn) {
    printf("max number :%d\n",(int)nn);
    return -1;
    }
  return 0;
}


void fshow_1(int n) {
 long t;
 MON x;
  t=n-1; t*=SMON;
  lseek(file,t,SEEK_SET);
  read(file,&x,SMON);
  show_1(&x);
}


void fshow_all() {
 MON x;
  lseek(file,0,SEEK_SET);
  print_head();
  while(read(file,&x,SMON))
    show_row(&x);
  print_line();
}


void fdel_item(int n) {
 long t;
 MON x;
  t=n; t*=SMON;
  lseek(file,t,SEEK_SET);
  while (read(file,&x,SMON)) {
    t=lseek(file,t-SMON,SEEK_SET);
    write(file,&x,SMON);
    t=tell(file);
    t=lseek(file,SMON,SEEK_CUR);
    }
  chsize(file,t-SMON);
}
третий файл связан с оформлением таблицы так что я его тут не пишу. Вообщем это первый мой вопрос тут так что задавайте встречные вопросы мог что то не ясно выложить.

Последний раз редактировалось MaTBeu; 01.04.2009 в 22:34.
Stiff Master вне форума Ответить с цитированием
Старый 02.04.2009, 19:55   #2
Svetlag
Пользователь
 
Аватар для Svetlag
 
Регистрация: 24.02.2009
Сообщений: 85
По умолчанию

Пустой файл создается, т.е initf и commit работают нормально, остальные не посмотреть: не хватает некоторых функций. Вы откуда запускаете? Не забыли, что нужно ехе-файл запускать с параметром?
Svetlag вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами МартинИ Паскаль, Turbo Pascal, PascalABC.NET 3 23.12.2008 21:36
Программа для работы с dfx-файлами Sanek777 Фриланс 5 11.11.2008 21:04
Работа с файлами Joxter Помощь студентам 4 08.10.2008 01:17
Работа с файлами. tresh Паскаль, Turbo Pascal, PascalABC.NET 3 05.10.2008 23:32
Работа с DLL - программа, которая будет общаться с файлами данных, представленных в текстовом виде SnakeMan Общие вопросы Delphi 31 02.11.2007 13:35