Один из моих файлов должен отличаться от других, и эта программа должна сказать мне, какой именно. У меня есть ощущение, что "_setmode..." может быть неправильным (на самом деле почти уверен, что это не имеет никакого эффекта - предполагается, что режим ввода устанавливается в двоичный в начале программы). Для проверки я сбрасываю программу после каждого использования и переименовываю текстовые файлы, чтобы все они тестировались с одним и тем же именем. Я использую C:/Users/User/Desktop/file.txt в качестве команды DOS.
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
int main(void){
int s1=0, s2=0, s3=0, s4=0;
int m1=3, m2=7, m3=13, m4=23;
int B;
_setmode(_fileno(stdin), _O_BINARY);
while((B=getchar()) != EOF)
{
s1 = (s1 + B*m1) % 256;
s2 = (s1+s2 + B*m2) % 256;
s3 = (s1+s2+s3 + B*m3) % 256;
s4 = (s1+s2+s3+s4 + B*m4) % 256;
B = getchar();
printf("%02x%02x%02x%02x\n", s1, s2, s3, s4 );
}
return 0;
}
Файлы, которые я использую (pastebin со ссылками pastebin на файлы, так как мне нужно больше представителей, чтобы опубликовать более 2 ссылок):
Ссылки на файлы: http://pastebin.com/wLF9NRNu
Я также только что узнал, что я, по-видимому, должен проверять только значение средней точки, поэтому мне была дана следующая команда, которая кажется мне более или менее бесполезной:
C:\ > mdPoint ‹ файл.txt
Кроме того, поиграв с ним еще немного, кажется, что мои команды вообще не открывают файлы, а просто дают мне вывод на основе текста команды, который я ввожу. Не уверен, что с этим случилось.
getchar()
из цикла while. Это заставляет вас пропускать каждый второй байт в вашем расчете. - person user590028   schedule 08.02.2015