Funkcja write(), makra, deklaracja największej liczby unsigned int (ANSI C)

0

Witam.
Prosiłbym o odpowiedź na trzy pytania.

  1. Fukncja write() tworzy mi plik i zapisuje w nim dane, ale po otwarciu pliku są one w postaci chińskich znaczkwów. Czy tak ma być, czy gdzieś popełniłem błąd?
    Otwarcie pliku:
fpw = open("wyniki2.txt", O_CREAT | O_WRONLY | O_APPEND);

Zapisywanie do pliku:

char schowek[50];
sprintf(schowek, "%d zdawalo, a %f osob zdalo mature w kraju.\n", obliczIloscZdajacych(woj), obliczIloscZdanych(woj));
printf("%s\n", schowek);
  1. Wytłumaczy mi ktoś czemu poniższy kod zwraca "Nie"?
#include <stdio.h>
#define IS03(A) (((A) == 0.3)? "TAK": "NIE")
int main(void){
    float a = 0.1;
    float b = 0.2;

    printf("Wynik: %s", IS03(a+b));
    return 0;
}
  1. Mam takie zadanie na studiach, ale nie bardzo go rozumiem:

W jakim pliku nagłówkowym znajdziemy deklarację największej liczy, którą można przechować w zmiennej typu unsigned int?
Pod jaką nazwą została tam zadeklarowana?
Jak wyznaczyć tą liczbę "ręcznie"?
Napisz program, który sprawdza, czy policzona przez Ciebie liczba jest identyczna z deklaracją z biblioteki standardowej.

0

Ad 1: sprawdź kodowanie swojego pliku z kodem źródłowym.

Ad 2: poczytaj sobie o tym, jak w komputerze reprezentowane są liczby zmiennoprzecinkowe.

Ad 3: czego konkretnie tu nie rozumiesz?

0

Ad 1: Kodowanie mam ustawione na UTF-8. Próbowałem zmieniać na inne, ale nic nie dawało. Plus tworzy mi ten plik z dostępem tylko dla administratora.

Ad 2: Czy jest to związane z tym?:

Każdą niezerową liczbę rzeczywistą reprezentujemy za pomocą przybliżenia wymiernego w postaci
pary (m,c), gdzie m nalezy do [-1, -1/2) suma [1/2, 1) jest mantysą,

I tym, że działania na liczbach zmiennoprzecinkowych są obarczone błędem z powodu przetworzenia liczby na liczbę maszynową?

Ad 3: Nie wiem jak znaleźć tą deklaracje największej liczby, którą można przechowywać w zmiennej typu unsigned int. Nawet nie wiem w jakich plikach nagłówkowych szukać...

0

Ad 2: a brzmi Ci to sensownie czy nie? :)

Ad 3: oj tam od razu po plikach nagłówkowych. c unsigned int max w Google, prościej się nie da do tej informacji dotrzeć.

0

Ad 2: Dla mnie brzmi ciekawie na pewno, ale znalazłem fajny pdf o przetwarzaniu liczb zmiennoprzecinkowych, więc na pewno sobie jeszcze o tym poczytam.

Ad 3: limits.h Dzięki! :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1