У меня нет опыта работы с C бы то ни было (хотя я использую C# много), но я ищу, чтобы скомпилировать код C:C2113 Ошибка при компиляции кода C
http://practicalcryptography.com/cryptanalysis/stochastic-searching/cryptanalysis-bifid-cipher/
Когда я использую Command Developer строка в VS2015 скомпилировать его с cl.exe, я ударил ошибку:
c:\simple>cl bifidcrack.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
bifidcrack.c
bifidcrack.c(113): error C2113: '-': pointer can only be subtracted from another
pointer
bifidcrack.c(114): error C2113: '-': pointer can only be subtracted from another
pointer
c:\simple>
Почему это неисправного скомпилировать? Другие (в комментариях к странице) предположительно составили его без каких-либо проблем.
C: \ просто содержит:
C:\simple>dir
Volume in drive C is OS
Volume Serial Number is AA86-3F24
Directory of C:\simple
22/10/2015 02:50 <DIR> .
22/10/2015 02:50 <DIR> ..
12/10/2015 12:06 4,491 bifidcrack.c
12/10/2015 12:06 7,301,392 qgr.h
12/10/2015 12:06 574 scoreText.c
12/10/2015 12:06 44 scoreText.h
4 File(s) 7,306,501 bytes
2 Dir(s) 14,560,649,216 bytes free
C:\simple>
В соответствии с просьбой, вот линии в вопросе:
char *bifidDecipher(char *key, int period, char *text, char *result, int len){
int i, j;
char a,b; /* the digram we are looking at */
int a_ind,b_ind;
int a_row,b_row;
int a_col,b_col;
for (i = 0; i < len; i += period){
if (i + period > len){
period = len - i;
}
for (j = 0; j < period; j ++){
a = text[i+(j/2)];
b = text[i+((period+j)/2)];
/*if (index(key,a) == NULL || index(key,b) == NULL) break;*/
113 a_ind = (int)(index(key,a) - key);
114 b_ind = (int)(index(key,b) - key);
a_row = a_ind/5;
b_row = b_ind/5;
a_col = a_ind % 5;
b_col = b_ind % 5;
if (j % 2 == 0){
result[i+j] = key[5*a_row + b_col];
} else {
result[i+j] = key[5*a_col + b_row];
}
}
}
result[i] = '\0';
return result;
}
Строки кода, на которые ссылаются, были бы полезны ... –
Добавлен фрагмент bifidcrack.c и перечислены, которые являются строками 113 и 114. Надеюсь, что это поможет! – tom982
Нужно знать, что такое «индекс». Если он не возвращает символ "char *", то да, это ошибка компиляции. –