Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2016, 18:28   #1
ilyakonst
Пользователь
 
Регистрация: 27.03.2016
Сообщений: 20
По умолчанию рассчитать CRC16. с текстовыми и бинарными файлами работает без проблем. Если же подсунуть ей exe файл, то вылетает.

Написал программу, рассчитывающую CRC16. с текстовыми и бинарными файлами работает без проблем. Если же подсунуть ей exe файл, то вылетает. Скорее всего, как-то неправильно работаю с файлами, подскажите пожалуйста.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

long long from10to2(unsigned short x)
{
	int i, n = 0, k;
	long long y = 1;
	while (x > y)
	{
		y *= 2;
		n++;
	}
	k = n;
	long long q, *C;
	if (n != 0)
	{
		if (x == y)
		{
			y = 1;
			while (k != 0)
			{
				y *= 10;
				k--;
			}
			q = y;
		}
		else
		{
			C = (long long*)calloc(sizeof(long long), n);
			for (i = 0; i < n; i++)
			{
				if (x != 1)
				{
					q = x % 2;
					C[i] = q;
					x /= 2;
				}
				else C[i] = 1;
			}
			i = 0;
			q = 0;
			while ((n - 1 - i) > 0)
			{
				q += C[n - 1 - i];
				q *= 10;
				i++;
			}
			q += C[0];
			free(C);
		}
	}
	else q = 0;
	return(q);
}


unsigned short x_or(unsigned short del)
{
	int n = 0, i = 0;
	unsigned short x, y, z;
	char simb;
	FILE *f = fopen("wabming.exe", "rb");
	if (f == NULL) printf("File not open\n");
	while (!feof(f))
	{
		simb = fgetc(f);
		n = 0;
		if (feof(f)) break;
		x = unsigned short(simb);
		x <<= 8;
		n += 8;
		if (i == 1) x = x ^ z;
		while (n < 16)
		{
			y = x;
			y /= 32768;
			if (y != 1)
			{
				x <<= 1;
				n++;
			}
			else
			{
				x <<= 1;
				n++;
				x = x ^ del;
			}
			z = x;
			i = 1;
		}
	}
	return(z);
}

int main()
{
	double t1 = 0, t2 = 0;
	t1 = clock();
	unsigned short ans10, del = 32773; // 32773 - 1000000000000101;
	long long ans2;
	ans10 = x_or(del);
	printf("CRC16 = %d\n", ans10);
	ans2 = from10to2(ans10);
	printf("CRC16 = %lld\n", ans2);
	t2 = clock();
	printf("Runtime = %.4f\n", (t2 - t1) / (CLOCKS_PER_SEC));
	return 0;
}
ilyakonst вне форума Ответить с цитированием
Старый 07.04.2016, 18:35   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Как именно вылетает? Проверяйте возвращаемые значения функций и смотрите errno/strerror.

exe не свой же запущенной программы?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 07.04.2016, 18:40   #3
ilyakonst
Пользователь
 
Регистрация: 27.03.2016
Сообщений: 20
По умолчанию

да по сути если дать на открытие файл text.bin или text.txt то все работает. А если exe то просто вылет
ilyakonst вне форума Ответить с цитированием
Старый 07.04.2016, 18:44   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А, ну бывает.

Надеюсь вы разберетесь в чем причина и все исправите.

Возможно стоило прочитать и осмыслить предыдущее сообщение для облегчения этого процесса.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.04.2016, 17:01   #5
ilyakonst
Пользователь
 
Регистрация: 27.03.2016
Сообщений: 20
По умолчанию

Всем спасибо за помощь, просто exe файлы нужно класть не в тот же каталог что и текстовики и бинарные
ilyakonst вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает .exe-файл на OC Windows 7 Airat66 Windows 1 21.02.2012 13:46
Если знаешь Pascal С++ учиться без проблем?? Sylar9 Общие вопросы C/C++ 3 18.12.2011 12:42
Нужно рассчитать CRC16, на Си. Коды с википедии не подходят.. ( farewe11 Помощь студентам 7 10.06.2010 22:32
Не работает Exe файл relav_ Общие вопросы Delphi 9 03.03.2008 08:31
Можно ли вообще изменить exe-файл, если да то как? Скуби-ду Общие вопросы Delphi 6 10.04.2007 07:56