Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
Автор: cheops (06.12.2011 в 21:51) При разборе такого файла можно начать отталкиваться от следующей программы (при условии конечно, строго формата, для простоты большинство проверок опущены)
#include <stdio.h> #include <io.h> #include <iostream> using namespace std; // Прототипы функций long filesize(FILE *pFile); // Главная функция int main() { // Вспомогательные структуры и дескрипторы FILE * pFile; long i, k, chartotal, numbertotal = 0; // Открываем файл pFile = fopen ("crypt.txt", "rb"); if (pFile == NULL) { cerr << "Не удалось открыть файл" << endl; return 1; } // Определяем размер файла chartotal = filesize(pFile); // Резервируем строку под содержимое файла char *str = new char[chartotal]; // Читаем содержимое файла long result = fread (str, 1, chartotal, pFile); if (result != chartotal) { cerr << "Не удалось прочитать файл" << endl; return 1; } // Закрываем файл fclose (pFile); // Подсчитываем количество целых чисел: // количество пробелов + 1 for(i = 0; i < chartotal; i++) { if(str[i] == ' ') numbertotal++; } if(numbertotal) numbertotal++; // Выделяем память под массив чисел int *arr = new int[numbertotal]; // Заполняем массив char test[80]; int beg = 0, end = 0; for(i = 0, k = 0; i < chartotal; i++) { if(str[i] == ' ') { beg = end; end = i + 1; strncpy(test, str + beg, end - 1 - beg); test[end - 1 - beg] = '\0'; arr[k++] = atoi(test); } } // Обрабатываем последнее число отдельно strncpy(test, str + end, chartotal - 1 - end); arr[k++] = atoi(test); // Выводим содержимое массива arr с числами for(i = 0; i < numbertotal; i++) { cout << arr[i] << endl; } // Освобождаем выделенную память delete [] str; delete [] arr; // Пауза перед закрытием system("PAUSE"); return 0; } long filesize(FILE *pFile) { long result; fseek (pFile , 0 , SEEK_END); result = ftell (pFile); rewind (pFile); return result; }
Ваше имя:
Пароль:
Цитировать Используйте тэги для выделения текста: Код: [code][/code] Жирный: [b][/b] Наклонный: [i][/i] URL: [url][/url]
Сообщение:
Прикрепить: