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

Прочитать каждую нечетную и четную строку в файле - C++

Восстановить пароль Регистрация
 
unkw
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 4
19.05.2013, 00:56     Прочитать каждую нечетную и четную строку в файле #1
На вход идет файл, в котором каждая четная строка является размером пакета, а в нечетной идет название пакета.
Прим.:
XML
1
2
3
4
Abcdfe
23.5 Kb
SFGKsdfksd
457.5 Kb
Нужно вывести размеры пакетов (с их названиями, конечно) в порядке убывания. Сам не допер как убрать Kb из строки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 00:56     Прочитать каждую нечетную и четную строку в файле
Посмотрите здесь:

Преобразовать строку, удалив из нее каждую пару символов ‘<<’ и повторив каждую пару символов ‘>>’. C++
Определить, имеет ли последовательность чисел, находящихся в файле, нечетную длину C++
C++ Консольное приложение. В файле находятся только целые числа. Определить, имеет ли последовательность чисел, находящихся в файле, нечетную длину
C++ Заменить на "-" каждую четную букву в слове
Прокомментировать каждую строку кода (или хотя бы каждую функцию) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
StamSvam
6 / 6 / 0
Регистрация: 08.07.2012
Сообщений: 65
19.05.2013, 01:27     Прочитать каждую нечетную и четную строку в файле #2
В общем вот Вам вектор, что искать и о чем подумать.

Считываете файл с помощью fopen(), хэдер - <stdio.h>
Есть функция fscanf(), считывающая все символы до первого неподходящего или до конца файла. Каждый вызов - чтение из файла с того места, где находилась каретка после предыдущего вызова.

Т.е. если у Вас есть файл, то функция чтения будет иметь примерно такой вид:

C++
1
2
3
4
5
6
7
8
char str[100];
 
FILE *file;
file = fopen ("MyFile.txt","rw");    
while (!eof(file))
{
  fscanf("%s\n",&str);
}
код не тестировался, но алгоритм таков - считываете все символы, которые находятся перед символами "\n" в файле, т.е. новую строку с каждым новым вызовом функции, и записываете их в массив str. Дальше что хочешь делай, выводи, сохраняй в список строк, обрабатывай, парси..
unkw
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 4
19.05.2013, 01:42  [ТС]     Прочитать каждую нечетную и четную строку в файле #3
Это понятно. Я не могу найти функцию, чтобы стереть из нечетной строки "Kb", для того чтобы отсортировать по убыванию числа.

upd: допер, под ночь голова не соображает.
StamSvam
6 / 6 / 0
Регистрация: 08.07.2012
Сообщений: 65
19.05.2013, 01:45     Прочитать каждую нечетную и четную строку в файле #4
unkw, а на кой Вам функция, чтобы стереть?
Вы в массив считали строку из файла? Считали.
Доступ к элементам массива получить можете? Запросто.

Ну так пробегитесь по массиву и все символы, которые перед пробелом - выведите. ("23.5 Kb", пробел означает,что число кончилось)
unkw
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 4
19.05.2013, 01:51  [ТС]     Прочитать каждую нечетную и четную строку в файле #5
Эм.. Извиняюсь за глупый вопрос, но как?
StamSvam
6 / 6 / 0
Регистрация: 08.07.2012
Сообщений: 65
19.05.2013, 01:58     Прочитать каждую нечетную и четную строку в файле #6
А чтобы отсортировать, можно считанные строки, содержицие отделенное от "Kb" число, привести к типу float, вроде как. Функции не помню, давно с текстом не работал.

Если брать Вашу задачу полностью, то проще будет организовать список, ибо надо сортировать одни данные, а помимо этого есть еще и связанные с ними другие данные (имя связано с размером)

Добавлено через 3 минуты
Цитата Сообщение от unkw Посмотреть сообщение
Эм.. Извиняюсь за глупый вопрос, но как?
C++
1
2
3
4
5
6
char a[10], b[10];
for (int i=0; i<10; i++)
{
  if (b[i] == ' ') break;  
  a[i] = b[i];
}
в итоге в массиве а[] числа.
unkw
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 4
19.05.2013, 02:21  [ТС]     Прочитать каждую нечетную и четную строку в файле #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string>
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <stdio.h>
 
using namespace std;
 
main() {
 
    system("pacman -Qi | sed 's/Name/HHHHHName/;s/Installed/HHHHHInstalled/' | grep HHHHH | sed '/^Install Reason/d' | awk -F ': ' '{print $2}' | sed 's/^ //' | sed 's/^ //' > tmp");
    
    char str[100];
 
    ifstream f; f.open("tmp");    
    while (!f.eof())
    {
        fscanf("%s\n",&str);
    }
 
    system("rm tmp");
}
Жалуется на fscanf("%s\n",&str);
XML
1
2
3
4
5
% g++ main.cpp 
main.cpp: In function ‘int main()’:
main.cpp:18:27: error: cannot convert ‘const char*’ to ‘FILE* {aka _IO_FILE*}’ for argument ‘1’ to ‘int fscanf(FILE*, const char*, ...)’
         fscanf("%s\n",&str);
                           ^
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2013, 10:41     Прочитать каждую нечетную и четную строку в файле
Еще ссылки по теме:

C++ Прочитать информацию из файла и рассортировать как структуру, где хранятся данные про каждую книгу
C++ Прочитать в файле каждую строку в обратном порядке
Каждую нечетную цифру удвоить, а к четным цифрам дописать 01 в двоичном коде C++

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

Или воспользуйтесь поиском по форуму:
StamSvam
6 / 6 / 0
Регистрация: 08.07.2012
Сообщений: 65
19.05.2013, 10:41     Прочитать каждую нечетную и четную строку в файле #8
unkw, надеюсь, вы догадались поискать синтаксис функции в интернете?

fscanf(FILE *, "%s", &s), команда используется только для объекта FILE. у ifstream другие функции чтения.

сонный был вчера, с синтаксисом функции накосячил) там, перед типами, еще один аргумент - это как раз наш FILE*
Yandex
Объявления
19.05.2013, 10:41     Прочитать каждую нечетную и четную строку в файле
Ответ Создать тему
Опции темы

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