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

Исследование "неизвестного" формата (отрезать начало файла до определённого заголовка) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить, сколько раз заданное сочетание символов встречается в строке http://www.cyberforum.ru/cpp-beginners/thread770910.html
Дана строка. Определить, сколько раз заданное сочетание символов встречается в строке.
C++ С чего начать изучение C++ Я понимаю, что вопрос уже сто раз задавали, но, тем не менее, задам его ещё раз. Итак -- с чего мне начать изучение C++? Сейчас я знаю только паскаль, (использовал free pascal, если это имеет какое то значение). На паскале уже год, ООП не использовал. Читал по комментариям, что реализация ООП на C++ очень хорошая, и решил уже начать изучение этого языка. Но для начала мне надо не ООП, а самые... http://www.cyberforum.ru/cpp-beginners/thread770891.html
Вывести те слова, которые отличаются от последнего слова и удовлетворяют условию, что в слове нет повторяющихся букв C++
Короче я сделал так #include <stdio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> void main() { int const N=25; char line; char line1;
Найти коэффициенты произведения многочленов C++
Помогите пожалуйста решить эту задачу, используя массивы. Данные задачи в картинке. Буду очень благодарен!
C++ Класс линия http://www.cyberforum.ru/cpp-beginners/thread770873.html
Задание: описать класс линии, в котором конструктор ещё и рисует её. (это сделано). Доп. задание: сделать деструктор. вопрос: как? просто длину занулить или что? # include <iostream> using namespace std; class line { int len; public: line(int a);
C++ Перевод из 16 сс в 4 сс Помогите пожалуйста написать программу на C++ по переводу из 16 сс в 4 с дробными числами, а то я не очень понимаю как это сделать, недавно начал изучать этот язык. Добавлено через 1 час 16 минут #include <iostream> #include <math.h> using namespace std; int main() {double Number, b, c; int a, d, i, j=0, k; подробнее

Показать сообщение отдельно
OSP-Scata
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 3

Исследование "неизвестного" формата (отрезать начало файла до определённого заголовка) - C++

24.01.2013, 19:29. Просмотров 1630. Ответов 6
Метки (Все метки)

Здравствуйте!
Программированию я учусь собственными силами, о преподаваемом в университетах или на курсах не имею ни малейшего понятия. Только недавно перешла со всяких хеллоуворлдов и "введите 2 числа, программа посчитает сумму" на что-то относительно серьёзное, и тут вполне предсказуемо споткнулась. Итак, есть такая хорошая старая игрушка - Aliens vs Predator (1999 года). А я решила поучиться разбирать неизвестные форматы файлов. Разобрала звуки, лежащие в папке fastfile и имеющие названия Snd2.ffl, Snd3.ffl и т.д. Вот как выглядят они в hex-виде:
Как видите, в начале идут текстовые данные (в каждом файле свои и разной длины), потом - заголовок WAV (я его красным обвела). Если отрезать начало файла до этого самого заголовка и поменять расширение на .wav, он прекрасно играется в плеере. Собственно, решила я это отрезание автоматизировать. И тут-то споткнулась. Удалить строку из файла (текстового) могу, копировать из файла в файл тоже (но опять-таки текст), а вот как тут? По идее, надо читать файл до RIFF, скопировать данные, начиная с RIFF, в новый файл, и задать ему расширение .wav. Таким образом, начало отбросится. Вопросы:
1) Как читать? С типом byte обращаться не умею совершенно.
2) Как указать RIFF в качестве "места, откуда копируем"? Поскольку файл не текстовый, то явно никаких char и тем более string быть не может. Или может? А если даже может, то как организовать цикл "читаем до тех пор, пока не встретится вот эта строка\массив char"? Счётчик байтов вводить?

В качестве "тренировки на кошках" изучаю стащенный с этого же форума код, который немного подкорректировала:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{   
    int line_number; // переменная для хранения номера строки
    ifstream infile;
    ofstream outfile;
 
    infile.open("testfile.txt");
    outfile.open("newfile.txt");
 
    cout << "Enter number of line: " << endl;
    cin >> line_number;
 
    char buffer[1000];
 
    while(!infile.eof())
    {
    for (int line_counter = 0; line_counter < line_number; line_counter++)  // не берём первые строки
        infile.getline(buffer,sizeof(buffer));
        outfile << buffer << endl;
    }
 
    infile.close();
    outfile.close();
 system("pause");
    return 0;
}

В оригинале это было "перенести весь текст из файла в новый файл". Я попыталась переносить не весь, а с определённой строки (т.е. задача, аналогичная моей с AvP-шными звуками), для чего добавила переменную и цикл for. Но в итоге получается так: в файле 6 строк, вводим, к примеру, число 3. Программа пропускает первые две строки, берёт третью, но следующая таким образом снова оказывается первой. В общем, в новый файл переносится каждая третья строка, а не все, начиная с третьей.

В общем, как всё это провернуть нормально? Заранее спасибо.
Миниатюры
Исследование "неизвестного" формата (отрезать начало файла до определённого заголовка)  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru