Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Требуется создать полноценную замену секретой функции int sz2szHex(char *sz, const char *psz);
- // Известно, что оригинал занимал 30 строк Си-кода с учётом пустых строк. В обычном оформлении.
- // Код функции размещён в объектном файле и работоспособен. Желательно воссоздать её аналог в
- // учебных целях.
- //---------------------------------------------------------------------------------------
- #include <stdio.h>
- char szSource1[71] = "7542FB6685F9FD8F37D56FAF62F0BB4563684A51539E4B26F0840DB361E0027C",
- szSource2[71] = "7542FB6685F9FD8F37i W_56FAF62F0BB4563684A51539E4B26F0840D1E0027C",
- szSource3[71] = "7542FB6685F9FD8F37D5 FAF62F0BB4563684A51539E4B26F0840DB361E0027C",
- szSource4[71] = "7542FB6685F9FD8F37it56FAF62F0BB4563684A51539E4B26F0840D1E0027C11",
- szDestin [71];
- int sz2szHex(char *sz, const char *psz);
- ///////////////////////////////////////////////////////////////////////////////
- int main() //
- {
- int res = sz2szHex(szDestin, szSource1); printf("%d, %s\n", res, szDestin);
- res = sz2szHex(szDestin, szSource2); printf("%d, %s\n", res, szDestin);
- res = sz2szHex(szDestin, szSource3); printf("%d, %s\n", res, szDestin);
- res = sz2szHex(szDestin, szSource4); printf("%d, %s\n", res, szDestin);
- }
- // sz <- psz
- // Перемещает в *sz из *psz только символы, соответствующие 16-теричным числам:
- // 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
- // Возвращает кол-во некорректных-отфильтрованных символов.
- /////////////////////////////////////////////////////////////////////////////////
- int sz2szHex(char *sz, const char *psz) //
- {
- int k = 0,
- r = 0;
- for(int i = 0; psz[i]; i++)
- {
- if(psz[i] > 47)
- {
- if(psz[i ] < 58) {
- sz[k++] = psz[i]; continue;
- }
- if(psz[i ] > 96)
- if(psz[i ] < 103) {
- sz[k++] = psz[i]; continue; // a = 97, b = 98, c = 99, d = 100, e = 101, f = 102
- }
- if(psz[i ] > 64)
- if(psz[i ] < 71) {
- sz[k++] = psz[i]; continue; // A = 65, B = 66, C = 67, D = 68, E = 69, F = 70
- } r++;
- } else r++;
- }
- sz[k] = 0;
- return r;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement