Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Использование ifstream в VSC++ - C++ / 2 сообщений из 2, страница 1 из 1
01.08.2015, 20:40
    #39021045
The New Guy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование ifstream в VSC++ - C++
Вопрос, хочу поработать с файлом, но программу готовую нужно унести в другое место, поэтому абсолютный адрес для доступа к файлу использовать нельзя. Делаю в вижуал студии, если положить файлы в дебаг и папку проекта, тогда всё работает правильно, если как то иначе, то вылезает или один ноль на консоль, или бесконечное количество нулей. Нужно чтобы все файлы лежали в одном месте в двух хранить не вариант. вот код:

Код: plaintext
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.
51.
52.
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <conio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <cstring>

using namespace std;

unsigned int CRC32_function(unsigned char *buf, unsigned long len)
{
unsigned long crc_table[256];
unsigned long crc;
for (int i = 0; i < 256; i++)
{
crc = i;
for (int j = 0; j < 8; j++)
crc = crc & 1 ? (crc >> 1) ^ 0xEDB88320UL : crc >> 1;
crc_table[i] = crc;
};
crc = 0xFFFFFFFFUL;
while (len--)
crc = crc_table[(crc ^ *buf++) & 0xFF] ^ (crc >> 8);
return crc ^ 0xFFFFFFFFUL;
}

//возвращание конечного CRC32. Достаточно вызвать эту функцию и указать имя файла, для которого будет произведён расчёт
unsigned int CRC32_count(char* filename){
	char buf[4096*64]; //сколько символов в файле, на самом деле, это должно быть больше, 2^31-1 будет для файла размером 2ГБ
	ifstream f (filename,std::ios::binary);
	f.read(buf,4096*64);
	return CRC32_function((unsigned char*)buf, f.gcount());
}

int _tmain(int argc, _TCHAR* argv[])
{
		std::fstream fin;
		std::string buf;
		fin.open("files.txt");
		while(!fin.eof()) {
        std::getline(fin, buf);
		char *chrstr=new char[buf.length()+1];
		strcpy(chrstr, buf.c_str());
		int len=CRC32_count(chrstr);
		std::cout<<len;
		}  
	_getch();
	return 0;
}
...
Рейтинг: 0 / 0
01.08.2015, 22:55
    #39021072
П.С.М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование ifstream в VSC++ - C++
The New GuyВопрос, хочу поработать с файлом, но программу готовую нужно унести в другое место, поэтому абсолютный адрес для доступа к файлу использовать нельзя

Сделайте путь для поиска файла настраиваемым:
- либо передавайте этот путь, как параметр в командной строке при запуске программы
- либо сделайте конфигурационный файл, из которого и читайте путь
- либо читайте из реестра (если виндовс)
- ну или условьтесь, что файл должен быть в какой-либо папке относительно вашего исполняемого файла.

PS: и (как минимум) уберите дублирующиеся инклуды, добавьте проверку существования файла.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Использование ifstream в VSC++ - C++ / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]