Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Почему не работает программа на С

12K
13 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Помогите мне пожалуйсто у меня прога не работает хотя вроде все правильно, может это глюк в TURBOC???
И как сделать так чтоб если прогу не вбивая в в TURBOC просто перенеся ее в файл рууский язык не читался как лабуда всякая???

Программа составления каталога компакт-дисков.

[COLOR="Red"]какие проблемы сообщение отредактировать?[/COLOR] (moderator)
Страницы:
242
21 ноября 2006 года
Оlga
2.2K / / 04.02.2006
если это готовый, то ...
я конечно не претендую на совершенство кода, но больше такии ужасы исправлять не собираюсь.
12K
21 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Файлик не качается почемуто пишет что я лох и не авторизирован, хотя это далеко не так
242
21 ноября 2006 года
Оlga
2.2K / / 04.02.2006
странно, у меня все качается.
Код:
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#define PATH_FILE "Worker.dat"
/*Opredelenie stryktyru*/
struct workData
{
 int id;      /*NOMER*/
 char name[50];    /*Famalija Imja Otchestvo*/
 char job[10];           /*Dolzhnost' - JOB*/
 int date;                     /*Data postyplenija*/
};                 /*Konec stryktyru*/
 
int enterChoice(void);
void writeFile(void);
void updateRecord(void);
void plist(void);
FILE *search(FILE *fPtr, char *name, struct workData *worker);         //void poisk(void);
/*Glavnaja programma*/
int main()
{
 int choice;
 while( (choice=enterChoice()) != 7)
 {
  switch(choice)
  {
 
   case 1: writeFile(); break;/*запись данных в файл*/    
   case 2: updateRecord(); break; /*Obnovit' zapis'*/  
   case 5: plist(); break;/*Vuvod na ekran */
   default: printf("The choice isn't valid.\n"); break;/*Vuvod oshibki esla ykazan nevernui nomer*/
  }
 }
// fclose(cfPtr);
 
 return 0;
}
/*******************************************************************/
/*эта функция добавляет новые записи в файл(создает файл - если он не существует, или добавляет к существующему)*/
void writeFile()
{
 FILE *writePtr;
 struct workData worker;
 
 if((writePtr=fopen(PATH_FILE,"a+"))==NULL)
 {
  printf("File could not be opened.\n");
 }
 else
 {
  printf("Enter the id, name, job and date.\n");
  printf("Enter EOF to end input (ctrl+z).\n");
  scanf("%d%s%s%d", &worker.id, worker.name, worker.job, &worker.date);
  while(!feof(stdin))
  {
   fwrite(&worker,sizeof(struct workData),1,writePtr);
   scanf("%d%s%s%d", &worker.id, worker.name, worker.job, &worker.date);
 
  }
  fclose(writePtr);
 }
}
/************************  Vuvod na pechat' ***************************/
void plist(void)
{
 FILE *fPtr;
 struct workData work;
 
 if(fPtr=fopen(PATH_FILE,"r"))
    {
  while (fread(&work, sizeof(struct workData),1,fPtr))  
   printf("%-6d%-16s%-11s%-6d\n",work.id,work.name,work.job,work.date);
  fclose(fPtr);
 }
 else
  printf("File could not be opened.\n");
 
}
/*********************    Obnovit' dannue  **************************/
void updateRecord(void)
{
 char w_name[50];
 FILE *fPtr;
 struct workData worker;
 int flag = 0, num = 0;
 printf("Enter the worker's name for update data:\n");
 scanf("%s", w_name);
 
 if( fPtr = fopen(PATH_FILE, "r+") )
 {
  if(fPtr = search(fPtr, w_name, &worker))
  {
   printf("The data for update: %-6d%-16s%-11s%-6d\n",worker.id,worker.name,worker.job,worker.date);
   printf("Enter the new data (id, name, job and date):\n");
   scanf("%d%s%s%d", &worker.id, worker.name, worker.job, &worker.date);
   fwrite(&worker,sizeof(struct workData),1,fPtr);
   flag = 1;
  }
 
  fclose(fPtr);
  if(!flag)
   printf("Error input."); /*пользователь с таким именем не найден */
 }
 else
  printf("File could not be opened.\n");
}
/******************************************************/
FILE *search(FILE *fPtr, char *w_name,struct workData *worker)
{
 int flag = 0, num = 0;
 while(fread(worker,sizeof(struct workData),1,fPtr) )
  {
  /*переменная worker - это указатель на структуру, поэтому обращаемся
  к членам структуры(lastname, id ... - members) worker->name_membere */
   if(strcmp(worker->name, w_name) == 0)
   {
    fseek(fPtr,num*sizeof(struct workData),SEEK_SET);
    return fPtr;  /*возвращаем указатель на файл установленный на адресс структуру для обновления*/
 
   }
   /*Считаем структуры, чтобы установить при помощи fseek указатель fPtr на нужный адресс, т.к. считываячитываем
   структуру -> указатель начинает смотреть на следущую структуру, поэтому надо вернуться назад.*/
   num++;  
  }
 return NULL;/* возвращаем NULL если не нашли в файле введенное пользователем имя => error input */
}
/***************** Nashe menuy ***************************/
int enterChoice(void)
{
 int menuChoice;
 printf("\n MENU \n"
 "1-Write worker's data.\n"  /* ==  "3-Add new\n"*/
 "2-Update\n"
 "5-Print\n"
 "7-Exit.\n");
 scanf("%d",&menuChoice);
 return menuChoice;
}
12K
21 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Оля спасибо большое тебе!!! Я бы без тебя пропал!А вот вопросик,но это только для себя это не для проги.Вот у меня есть время поступления на работу,а мне надо вывести на экран рабочего чей стаж работы в организации превышает значение введенное с клавы.Вот вопрос, во первых я так понимаю надо использовать функцию времени (как это делается).А во вторых можно простым вычитанием, ну короче формулами или как??? Еще раз повторю что это уже не обязательно просто мне интерестно, как если у тебя есть время поможешь??? Если нет то забей!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог