Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
maSt
5 / 5 / 1
Регистрация: 28.02.2010
Сообщений: 166
#1

Пока не конец файла, считывает 2 раза - C++

29.11.2012, 19:57. Просмотров 913. Ответов 0
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void delet1()
{
    char namefile1[100],s[256];
    int zktorego=0,ile = 0;
    scanf("%s",namefile1);
    strcat(namefile1, ".txt");
    FILE * fo;
    fo = fopen(namefile1,"r"); 
    FILE * f1;
    f1 = fopen("tmp.txt","wt"); 
    scanf("%i",&zktorego);
    for(int i=0;i<zktorego;i++) {fgets(s,256,fo);fprintf(f1,"%s\r\n", s);}
    scanf("%i",&ile);
    for(int i=0;i<ile;i++) {fgets(s,256,fo);}
    do{fgets(s,256,fo);fprintf(f1,"%s\r\n", s);}while (!feof(fo));
    fclose(fo);
    fclose(f1);
}
Написал функцию которая должна удалять из файла несколько строк.
То есть, открываю 1 файл для чтения , 2-ой для записи.

Считываю из которой строки начинать удалять. И прохожу все строки , до нужной мне.

Считываю сколько строк удалять, и прохожу их.

И пытаюсь считать все оставшиеся строки.
Но вот тут и закопан топор. Почему-то последняя строка считывается 2 раза.
Что с этим не так?

Добавлено через 57 минут
Уже даже через if попробовал, все равно считывает 2 раза. -(

Добавлено через 48 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void delet1(int &iloscrek)
{
    char namefile1[100],s[256];
    int zktorego=0,ile = 0;
    scanf("%s",namefile1);
    strcat(namefile1, ".txt");
    FILE * fo;
    fo = fopen(namefile1,"r+"); 
    FILE * f1;
    f1 = fopen("tmp.txt","w+"); 
    scanf("%i",&zktorego);
    for(int i=0;i<zktorego;i++) {fgets(s,256,fo);fprintf(f1,"%s", s);}
    scanf("%i",&ile);
    for(int i=0;i<ile;i++) {fgets(s,256,fo);}
    for (int i = ile+zktorego;i<iloscrek;i++){fgets(s,256,fo);fprintf(f1,"%s", s);}
    for (int i = 0; i< (iloscrek-ile);i++) {fgets(s,256,f1);fprintf(fo,"%s", s);}
    fclose(fo);
    fclose(f1);
}
Переписал вот так, осталась одна проблема
for (int i = 0; i< (iloscrek-ile);i++) {fgets(s,256,f1);fprintf(fo,"%s", s);} - должно переписывать уже нужную мне последовательность в 1 файл. Но ничего не происходит, Не понимаю почему.

Добавлено через 7 минут
Проблему решил просто закрывая файлы и открывая по новой перед записью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2012, 19:57     Пока не конец файла, считывает 2 раза
Посмотрите здесь:

увеличиваем число M в 2 раза и выводим текущее значение пока M<100 - C++
увеличиваем число M в 2 раза и выводим текущее значение пока M&lt;100 Помогите через цикл while полностью программу

Считывать данные пока не встретится символ '|' обозначающий конец ввода - C++
Нужно считать данные пока не встретится символ '|' обозначающий конец ввода. double val; while(cin &gt;&gt; val) vec.push_back(val) ...

Не считывает список с файла - C++
Есть такой вот кусок кода. struct worker { char fam; char name; char position; int year; worker *next; }; worker...

Криво считывает из файла - C++
Ситуация такая. Есть файл base.txt, там есть номера телефонов (по 11 символов каждый), пример ниже 79372937738 79277394843 ...

считывает текст из файла - C++
Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел.

Неверно считывает строку из файла - C++
Задание состоит в том, чтобы копировать содержимое одного файла в другой. Я написал следующий код: int count = 0; //количество...

Программа не считывает с файла текст полностью - C++
Делаю алфавитно-частотный словарь, и во время передачи всех символов из файла в строку(дабы дальше я с помощью токенов строку разделил) у...

Неправильно считывает 2 последних значения с файла - C++
Здравия! Завтра дедлайн,а тут внезапно такая ошибка. Отказывается читать 2 последних значения с файла ( это черновой вариант функции для...

программа, которая считывает текст из файла - C++
Написать программу, которая считывает текст из файла и выводит на экран толь* ко предложения, содержащие заданное с клавиатуры слово. ...

Написать программу, которая считывает текст из файла - C++
написать программу, которая считывает текст из файла и выводит на экран сначала предложения, начинающиеся с однобуквенных слов, а затем все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru