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

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

Восстановить пароль Регистрация
 
maSt
 Аватар для maSt
5 / 5 / 1
Регистрация: 28.02.2010
Сообщений: 166
29.11.2012, 19:57     Пока не конец файла, считывает 2 раза #1
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 раза
Посмотрите здесь:

C++ Добавить в конец первого файла содержимое второго файла
Не считывает с файла C++
Удвоить размер файла, записав в конец файла все его исходные элементы C++
C++ Не считывает с файла
не считывает текст из файла C++
Написать программу которая считывает считывает текст из файла и записывает в другой слова состоящие не менее чем из 7 букв C++
увеличиваем число M в 2 раза и выводим текущее значение пока M<100 C++
C++ Считывать данные пока не встретится символ '|' обозначающий конец ввода

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

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

Текущее время: 19:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru