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

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

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

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

29.11.2012, 19:57. Просмотров 920. Ответов 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 раза (C++):

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

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

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

Не считывает с файла - C++
Приношу извинения. Уже разобрался)

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

Не правильно считывает из файла - C++
при первом заходе считыват всё правильно, но начиная со второго он начинает странно считывать #include &lt;iostream&gt; #include &lt;fstream&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 19:57
Привет! Вот еще темы с ответами:

не считывает текст из файла - C++
Добрый вечер всем. вот собсна код, который не хочет работать из файла. #include &quot;iostream&quot; #include &quot;time.h&quot; #include &quot;conio.h&quot; ...

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

Неправильно считывает с файла - C++
Не могу понять в чем ошибка??? функция eof должна считывать с файла до пробела?? Т.е если в файле данные расположены так: а b ...

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


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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