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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2015, 23:04   #1
Dashbalzhin
Пользователь
 
Регистрация: 11.03.2015
Сообщений: 19
Смех Работа с файлом

Запись имеет вид: фамилия, номер телефона, дата рождения. Внести в начало списка информацию о четырех новых знакомых.

Код:
Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
 
struct zapisi
{
  char fam[12];
  char nomer[12];
  char data[12];
} a;
 
void input(FILE *); //  создание нового файла
void print(FILE *); // просмотр файла
void app(FILE *); // добавление файла в начало записи
void output(FILE *); // выход с подтверждением 
 
int main()
{
  char b;
  FILE *F;
  while(1)
  {
    puts("1-new file");
    puts("2-view file");
    puts("3-add from file");
    puts("4-output");
    puts("0-exit");
    b=getch();
    switch(b)
    {
      case '1': input(F); break;
      case '2': print(F); break;
      case '3': app(F); break;
      case '4': output(F); break;
      case '0': return 0;
        default: puts ("nevernii rezhim");
    }
  }
  return 0;
}
 
void input(FILE *F)
{
  char ch;
  F=fopen("lab2.dat","wb");
  printf ("\n Vvod \n");
  do
  {
    printf("\n familiy:");
    scanf("%s",&a.fam);
    printf("nomer telefona:"); 
    scanf("%s",&a.nomer);
    printf("deni rozhdeniya:"); 
    scanf("%s",&a.data);
    fwrite(&a,sizeof(a),1,F);
    printf ("\n finish? y/n");
    ch=getch();
  }while (ch!='y');
 
  fclose(F);
}

void print(FILE *F)
{
  int i=1;
  F=fopen("lab2.dat","rb");

  fread(&a,sizeof(a),1,F);
  while(!feof(F))
  {
    printf ("\nfamiliya: %s\nnomer telefona: %s\ndeni rozhdeniya: %s",a.fam,a.nomer,a.data);
    fread(&a,sizeof(a),1,F);
    i++;
  }
  
  getch();
}
 
void app(FILE *F)
{
  char ch;
  int i,k;
  zapisi m[10],w;
  
  F=fopen("lab2.dat","rb+");
  k=0;
  while(!feof(F))
    fread(&m[k++],sizeof(a),1,F);
 
  rewind(F);
  printf("\n To add the information\n");
  do
  {
    printf("\nfamiliy:"); 
    scanf("%s",&w.fam);
    printf("nomer telefona:"); 
    scanf("%s",&w.nomer);
    printf("deni rozhdeniya:"); 
    scanf("%s",&w.data);
    fwrite(&w,sizeof(w),1,F);
 
    printf("\nfinish? y/n");
    ch=getch();
  }while (ch!='y');
 
  for(i=0;i<k-1;i++)
    fwrite(&m[i],sizeof(a),1,F);
 
  fclose(F);
}
Ребята, у меня такой вопрос:
void ouput - это выход с подтверждением. Теперь в программе все хорошо. Но что вывести? То есть как? Просто я добавил в начало файла информацию. Как вывести?

Последний раз редактировалось Stilet; 28.04.2015 в 06:46.
Dashbalzhin вне форума Ответить с цитированием
Старый 28.04.2015, 06:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Но что вывести? То есть как?
То есть как это "как"?
Ты сей код сам писал? Признавайся. У тебя вообще-то функция вывода есть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2015, 12:48   #3
Dashbalzhin
Пользователь
 
Регистрация: 11.03.2015
Сообщений: 19
По умолчанию

Да. Конечно сам написал.
Dashbalzhin вне форума Ответить с цитированием
Старый 28.04.2015, 12:56   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда что делает функция print?
Или я неверно понял твой вопрос?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2015, 13:03   #5
Dashbalzhin
Пользователь
 
Регистрация: 11.03.2015
Сообщений: 19
По умолчанию

функция вывода есть.

Когда я пишу функцию вывода, то не работает.

Я включаю меню:
1. Создание нового файла
2. Просмотр файла
3. Добавление информации в начало записи
4. Выход с подтверждением

Вот так:
Код:
void output(FILE *F)
{
  char ch;
  
  printf ("\n Vivod \n");
  do
  {
    printf("\n familiy:");
    printf("%s",&a.fam);
    printf("\n nomer telefona:"); 
    printf("%s",&a.nomer);
    printf("\n deni rozhdeniya:"); 
    printf("%s",&a.data);
    fwrite(&a,sizeof(a),1,F);
    printf ("\n finish? y/n");
    ch=getch();
  }while (ch!='y');
}

Последний раз редактировалось Stilet; 28.04.2015 в 13:34.
Dashbalzhin вне форума Ответить с цитированием
Старый 28.04.2015, 13:35   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Когда я пишу функцию вывода
Функцию вывода в файл?
или на экран?
О чем именно ты говоришь?

Кстати чтот я не вижу чтоб ты файл открывал в твоей output()
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2015, 13:50   #7
Dashbalzhin
Пользователь
 
Регистрация: 11.03.2015
Сообщений: 19
По умолчанию

у меня void output() - это выход с подтверждением. На экран)) :-)
Dashbalzhin вне форума Ответить с цитированием
Старый 28.04.2015, 13:57   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
у меня void output() - это выход с подтверждением. На экран
Тогда что там делает функция fwrite() которая пишет в файл а не читает его?
Еще раз внимательно посмотри как сделана твоя print(), которая считывает из файла на экран и сравни ее с output().
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлом (С#) Nekit9401 Помощь студентам 2 19.01.2014 09:28
Работа с файлом С++ kryliaangela Помощь студентам 12 27.06.2012 08:08
работа с файлом Sergey Bi. старший Общие вопросы Delphi 5 16.05.2011 10:27
Работа с файлом Ямерт Помощь студентам 2 06.12.2010 18:23
С++ работа с файлом. НедоВовик Помощь студентам 1 05.07.2009 18:22