int8_t normal_to_fat12(const char* _n, char* _b){ static char bn[8]; static char be[3]; int16_t posdot, cntdot, i, i2; memset(bn, 0, 8); memset(be, 0, 8); memset(_b, ' ', 11); posdot = strpos(_n, '.'); cntdot = strcnt(_n, '.'); if(cntdot != 1) return DISK_MORE_DOTS; if(posdot == -1) return DISK_NOT_DOT; if(posdot == 0) return DISK_DOT_FIRST; if(posdot > 7) return DISK_DOT_PLUS_EIGHT; memcpy( bn, _n, posdot); memcpy( be, _n + posdot +1, 3); if(strcnt(bn, ' ')) return DISK_SPACE_IN_FILENAME; if(strcnt(be, ' ')) return DISK_SPACE_IN_EXT; if(strlen(be) != 3) return DISK_EXT_NOT_THREE; i2 = 0; for(i=0;i<8;++i) _b[i] = bn[i]; for(i=0;i<8;++i) if(_b[i] == 0) _b[i] = ' '; for(i=8;i<11;++i)_b[i] = be[i2++]; _b[11] = 0; return DISK_OP_OK; }
int main(int argc, char *argv[]) { int curr_n; sieve_size = 1000000; sieve = malloc(sizeof(char) * sieve_size); char buf[50]; strcpy(buf, "56003"); reverse(buf); size_t *indices = strndc(buf, '0'); printf("%s\n",buf); fill_prime_sieve(sieve, sieve_size); size_t cnt = strcnt(buf, '0'); printf("%d should be 2\n", cnt); for(int i = 0; i < cnt; i++) { printf("0 found at %d\n", indices[i]); } free(sieve); size_t** pset = malloc(sizeof(size_t *) * 8); for(int i = 0; i != 8; i++) { pset[i] = malloc(sizeof(size_t) * 5); memset(pset[i], -1, sizeof(size_t) * 5); } size_t test[3] = {1, 2, 3}; size_t setLength = powerset_wrapper(test, 3, pset); int i = 0; while(i < setLength) { int j = 0; putchar('['); while(pset[i][j] != -1) { printf(" %lu", pset[i][j]); ++j; } fputs(" ]\n", stdout); ++i; } return 0; }