int main(int argc, char *argv[]) { if (argc != 3) { printf("Składnia: <liczba> <liczba cyfr po przecinku>\n"); exit(1); } char *czesciRownania[2]; char *s2 = strtok(argv[1], "."); int p = -1; //Dzielimy, aby otrzymać liczby po przecinku while (s2 != NULL) { p++; czesciRownania[p] = s2; s2 = strtok(NULL, "."); } printf("0."); int a, i, temp; int *numbers; numbers = charArrayToIntArray(czesciRownania[1]); for (i = 0; i < atoi(argv[2]); i++) { temp = 0; for (a = sizeof(numbers)/sizeof(int); a >= 0; a--) { numbers[a] = 2 * numbers[a] + temp; temp = numbers[a] / 10; numbers[a] = numbers[a] % 10; } printf("%d", temp); } return 0; }
int myscanf(const char *format, ...) { arraySizeValue = 0; char test[1024]; char *source; int i, n = 0; int *number; va_list vl; if (read(0, test, 1024) < 0) { write(2, "An error occurred in the read.\n", 31); } va_start(vl, n); switch (format[1]) { case 's': //String source = va_arg(vl, char*); //Dzia³a tylko dla tablic zadeklarowanych mallokiem memcpy(source, test, sizeof(source)); break; case 'd': //Base 10 number = va_arg(vl, int*); int integer = intArrayToInt(cleanIntArray(charArrayToIntArray(test), 10), 10); memcpy(number, &integer, sizeof(int)); break; case 'b': //Base 2 number = va_arg(vl, int*); int binary = intArrayToInt(cleanIntArray(charArrayToIntArray(test), 2), 2); memcpy(number, &binary, sizeof(int)); break; case 'x': //Base 16 arraySizeValue = arraySize(test); number = va_arg(vl, int*); int hex = intArrayToInt(cleanIntArray(charArrayToIntArray(hexFix(test)), 16), 16); memcpy(number, &hex, sizeof(int)); break; default: break; } va_end(vl); return 0; }