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

Код: 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
Использование ifstream в VSC++ - C++
    #39021072
Фотография П.С.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The New GuyВопрос, хочу поработать с файлом, но программу готовую нужно унести в другое место, поэтому абсолютный адрес для доступа к файлу использовать нельзя

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

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


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