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

Построчное перемещение курсора в текстовом файле - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.98
Cowboy_Joe
0 / 0 / 0
Регистрация: 29.11.2010
Сообщений: 3
29.11.2010, 21:00     Построчное перемещение курсора в текстовом файле #1
Кусочек кода, см. комментарии
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
switch(flag)
{
    case'1':
        
            {
        
        f=fopen(value, "r"); //Открываем необходимый файл
        if (f!= NULL)
            printf("File opened.\n");
        else
            printf("Error.\n");
            
            }
        break;
    
    case'2':
        
        n=atoi(value);
        
            for (i = 0; i < n; i++) 
            {
              fflush(stdout);   
              fgets(mass[i], 50, f);   //Из уже открытого файла считываем, 
                                       //например 5 строк, курсор остается на 5 строке
              printf("%s",mass[i]);
              fflush(stdout);
              
            }
            
            //fseek(f, 0L, SEEK_SET); //Раскомментировать, если нужно, чтобы 
                                      //курсор вернулся в начало файла (можно забыть об этом)
    break;
    
    case'3':
//В данном кейсе нужно, чтобы прграмма, с учетом положения 
//курсора в данный момент (например, начало 5-ой строки), 
//передвигала его построчно вверх или вниз по файлу на то 
//количество строк, которое ввел пользователь (value, которое 
//использовалась ранее). Например, пользователь ввел значение "5", 
//курсор оказался вначале 10-й строки, "-5" - вначале первой. 
//Как сделать это через fseek (цикл с нахождением символа конца 
//строки и счетчиком?) или getline я не понимаю. Буду
//благодарен за любую помощь
        
        
        break;
    
    default:
        printf("Exit\n");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2010, 21:00     Построчное перемещение курсора в текстовом файле
Посмотрите здесь:

C++ Перемещение курсора в консоли
C++ Позиция курсора в файле
C++ Перемещение позиции курсора в консоли
Перемещение курсора C++
C++ Перемещение курсора мыши на заданные координаты и клик
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
29.11.2010, 21:45     Построчное перемещение курсора в текстовом файле #2
Смущает
вверх или вниз по файлу
Если ты имеешь ввиду окно текстового редактора, с текстом, тогда не знаю.
А если "вверх или вниз" это значит "вперёд ли назад" (ну то ест просто файл открыт некоторой фуенкцией, например fopen) тогда попробую помочь
Cowboy_Joe
0 / 0 / 0
Регистрация: 29.11.2010
Сообщений: 3
30.11.2010, 06:19  [ТС]     Построчное перемещение курсора в текстовом файле #3
Цитата Сообщение от kravam Посмотреть сообщение
это значит "вперёд ли назад" (ну то ест просто файл открыт некоторой фуенкцией, например fopen) тогда попробую помочь
Да, именно так, файл просто открыт функцией fopen
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
30.11.2010, 22:04     Построчное перемещение курсора в текстовом файле #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <windows.h> 
#include <stdio.h>
 
int main () {
 
 char per;
 int kolvo_strok;
 
 
 
 FILE* f;
 
 //файл необходимо обязательно открыть в бинарном режиме
 f= fopen ("f.txt", "rb");
 if (!f) {
  printf ("fail f.txt na ctenie ne otkrit\n");
  return 0;
 }
 
 //УСТАНАВЛИВАЕМ СЧЁТЧИК ФАЙЛА В ПОЗИЦИЮ 30, Это начало шестой строки
 printf ("=%d\n", fseek (f, 30, SEEK_SET));
 
 kolvo_strok= -5;
 
 //Поехали назад. По окончании этого цикла счётчик будет установлен в конец первой строки
 for (;kolvo_strok;) {
  fseek (f, -1, SEEK_CUR);
  per= fgetc (f);
  fseek (f, -1, SEEK_CUR);
  if (per== 10)
   kolvo_strok+=1;
 }
 
 //а по окончании этого- в начало первой строки
 do {
  fseek (f, -1, SEEK_CUR);
  per= getc (f);
  fseek (f, -1, SEEK_CUR);
 }
 while (ftell (f)&&per!=10); 
 
 per= getc (f);
 
 printf ("%c\n", per); 
 fclose (f);
  
 system ("pause");
 return 0;
}
Вот в качестве образца осчитывание назад, текстовый файл должен быть таким:
C++
1
2
3
4
5
6
7
8
9
io
kkk
rrrr
asdfg
hjklzx
cvbnm,.
asdfghjk
qwertyuio
poiuytrewq
Cowboy_Joe
0 / 0 / 0
Регистрация: 29.11.2010
Сообщений: 3
01.12.2010, 16:54  [ТС]     Построчное перемещение курсора в текстовом файле #5
Большое спасибо
Yandex
Объявления
01.12.2010, 16:54     Построчное перемещение курсора в текстовом файле
Ответ Создать тему
Опции темы

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