Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Запись в файл, чтение из файла, снова лабораторная 
V
    Опции темы
Varyen
Дата 25.10.2009, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 20.9.2009

Репутация: нет
Всего: нет



Здравствуйте всем снова! 

1. Собственно в следующей программе есть одна главная проблема - при чтении из файла сторки с номером счета, именем плательщика, суммой и датой, последняя строка дублируется, при этом сумма отражается некорректно во 2-й строке. 

2. Также в последней функции applyfileread есть проблема, что функция не работает если пользоваться строками кода которые закомментены, ну и если собственно убрать все ненужное из работающего. 

Ну самое главное с 1. проблемой разобраться, буду очень благодарен за помощь, а также за некоторые советы по коду, т.к. совсем ещё зеленый новичек smile 

Код


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <ctype.h>
#include <fcntl.h>
#include <bios.h>
#include <io.h>

void applyfilewrite();
void applyfileread();
void choice();
char dataconf[30], dataapply[30], date[10];
int dataapply1, bill;
FILE* config;
FILE* apply;

void choice()
{
char answer= 'v';
while (answer!='e')
     {
     rewind(stdin);
     printf("Choose what you want:\n");
     printf("e- end, w- write, r-read\n");
     scanf("%s", &answer);
     if (answer=='w')
       {
       applyfilewrite();
       }
     if (answer=='r')
       {
       applyfileread();
       }
      }
      fclose(apply);
      fclose(config);
      exit(1);
}

int main()
{
int config;
clrscr();
if((config=open("config.prj", O_RDONLY|O_TEXT|S_IREAD)) == NULL)
     {
     config = open("config.prj", O_RDWR|O_CREAT|O_TEXT|S_IREAD/S_IWRITE);
     printf("Input application file name\n");
     scanf("%30s",&dataconf);
     write(config, dataconf, sizeof(dataconf));
     close(config);
     }
config = open("config.prj", O_RDONLY|O_TEXT|S_IREAD);
while (!eof(config))
    {
    read(config, dataconf, sizeof(dataconf));
    printf("File name is %s\n", dataconf);
    }
choice();
close(config);
getch();
return 0;
}

void applyfilewrite()
{
apply = fopen(dataconf, "a");
printf("Input bill number: ");
scanf("%2d", &bill);
fprintf(apply, "%2d  ", bill);
printf("Input name of payer: ");
scanf("%30s", &dataapply);
fprintf(apply, "%30s", dataapply);
printf ("Input incoming sum from %s:", dataapply);
scanf("%10d", &dataapply1);
fprintf(apply, "%10d", dataapply1);
printf("Input date of payment: ");
scanf("%15s", &date);
fprintf(apply, "%15s\n", date);
fclose(apply);
}

void applyfileread()
{
//int i;
apply = fopen(dataconf, "r+");
fseek(apply, 0L, SEEK_SET);
while (!feof(apply))
{
//i=0;
//while(dataapply[i])
//{
//dataapply[i]= fgetc(apply); i++;
//}
fscanf(apply, "%d", &bill);
printf("%2d ", bill);
fscanf(apply, "%s", &dataapply);
printf("%30s", dataapply);
fscanf(apply, "%d", &dataapply1);
printf("%10d", dataapply1);
fscanf(apply, "%s", &date);
printf("%15s\n", date);
}
fclose(apply);
getch();
}


Добавлено: все, нашел ошибку совсем глупую, но искал реально долго

fscanf(apply, "%s\n", &date);  \n тут надо было поставить smile

извиняюсь за глупую тему, но вчера реально не понмал почему так происходит.

Это сообщение отредактировал(а) Varyen - 26.10.2009, 21:34
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.