@RicoElectrico: bo jak masz bardziej zawiklany kod, to lepiej jest sobie pewne dane grupowac. Dodatkowo struktury mozna wykorzystac do tego by moc projektowac obiektowo, co tez ulatwia niekiedy myslec nad schematem aplikacji. Dodatkowo, czesto strukture przekazujesz jako wskaznik, a wiec jest szybciej, az w koncu przy optymalizacjach adres struktury moze byc przekazany w jednym rejestrze, miast przez stos, co jest szybsze.
  • Odpowiedz
Czołem mireczki, mam problem z kodem. Piszę sobie programik w C do obsługi sygnałów. W skrócie chodzi o to, że parent tworzy sobie trójkę dzieci, które coś tam robią. Kiedy parent dostanie SIGHUP wysyła SIGHUP do wszystkich swoich dzieci, kiedy dziecko dostanie SIGHUP zaczyna od nowa robić to co robiło (u mnie szukanie liczb pierwszych). Z niewiadomego mi powodu handler sygnału dzieci działa, w handlerze sygnału rodzica działa tylko pierwszy printf. Szukam
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Piesa:
bo masz zamienione argumenty w wywolaniu kill.

SAINFO to tylko jesli chcesz korzystac z sigaction, ale bdzie dzialac tak czy siak

jesli chcesz koniecznie uzywac printf to
  • Odpowiedz
Pewnie noob question, ale nie mogę znaleźć odpowiedzi.
Mam taki kawałek kodu:

while(name[i] != '\0')
m_name[i] = name[i++];
Chciałem zrobić inkrementację w ten sposób (i to int zainicjalizowany przed pętlą zerem), ale wpisuje mi w m name jakieś śmieci oprócz prawidłowych danych. Czego tu nie rozumiem?
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@nienawidzejanka: Tak się nie powinno pisać. Mieszanie inkrementacji w jednej linijce z odczytem jest proszeniem się o problemy. W Twoim przykładzie prawdopodobnie odczytuje name[0], ale wpisuje to już do m_name[1], bo w międzyczasie zinkrementowało i.
Lepiej napisz:

while (name[i] !=
  • Odpowiedz
@jaguar963: do zastosowań typu jakiś termometr na one wire, czujnik na i2c czy spi to jest łatwe. Mi się ubzdurał odtwarzacz plików. wav z karty pamięci i nie było łatwo. Żeby odpalić sprzętowy i2s musiałem podglądać co się dzieje analizatorem stanów logicznych. W końcu i tak przeportowałem z Arduino core - ten firmware jest napisany na NONOS SDK swoją drogą. Kolejne rzeczy będę działał na esp-open-rtos. Tam jest dużo porządnego
  • Odpowiedz
w jaki sposób macie skonfigurowane środowisko do C pod Windowsem? wgl od pięciu ładnych lat pracowałem tylko na MacOS, ale ostatnio kupiłem sobie stacjonarkę i zaskakuje mnie jak pod Windowsem wszystko jest skomplikowane. chcesz programować w Ruby? spoko, zainstaluje ci osobny terminal, do tego programujesz w Pythonie? znowu kolejny, potem robi się tego gromadka. jakby nie mogło być to tak uproszczone jak na Unixie...

no ale już pomijając to, zainstalowałem sobie Visual
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@wuut: Ja bym się chyba z-----ł na windowsie programując w C z powodów jak opisałeś powyżej, chyba najprędzej bym jakąś maszynę wirtualną z Linuksem postawił.
  • Odpowiedz
@CichyGlosZTyluGlowy: To co robisz jest podwójnie złe. Nadpisujesz kopię wskaźnika w foo, w funkcji wywołującej nie ma to żadnego efektu. Ale nawet gdyby miało to by wskazywał na test z funkcji foo, którego czas życia się już zakończył, więc i tak UB.
  • Odpowiedz
Dawno nic nie pisałem w C i nie mogę dostrzec co jest nieprawidłowego w poniższym kodzie:

struct node {
int value;
};

void main() {
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mirki z #programowanie, potrzebuję rady. Od pewnego czasu zajmuję się programowaniem i zrobiłem trochę drobnych projektów, brałem też zlecenia na projekty zaliczeniowe z programowania. Niestety brakuje mi pomysłów na napisanie jakiś na prawdę dużych i przydatnych rzeczy. Macie jakieś pomysły? Używam #jezykc, #cpp, #python i #qt.
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@SuperFi: @Wina_Segmentacji: teraz tak. Zostawimy działanie np. przez 3s w 1 stronę. Potem ma się zatrzymać. A w 2 ma się kręcić po sygnale z pilota. Gdzieś miałem bibliotekę... zaraz poszukam :) I diodę IR muszę podłączyć
  • Odpowiedz
https://pastebin.com/Mch5QtVc

Mógłby ktoś rzucić okiem i mnie oświecić dlaczego pritnf w funkcji fun1() wyświetli 13?
Z tego co widzę var1 i var2 mają ten sam adres, wygląda jakby wartość zmiennej var2 dalej była przechowywana w pamięci mimo wyjścia z funkcji fun2() przez co zmienna var1 zostaje zainicjalizowana tą wartością z defaultu. Mógłby ktoś wyjaśnić?

#jezykc
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Malchos: To zależy do jakiego adresu zostanie przypisana zmienna. Jeżeli j zostanie zapisane na miejscu i to wyświetli ci się wartość jaką posiadało i ale nie zawsze tak będzie.
  • Odpowiedz
@Marcin648: @damienbudzik: To jest poprawny kod C, tablica o dynamicznie ustalanej wielkości to VLA (Variable-Length Array). W C++ tego nie ma, ale domyślnie gcc (i chyba clang) kompilują w pseudostandardzie gnu++, który takie rzeczy dodaje. Jak do linii wywołania dodasz -std=c++14 to się nie skompiluje.
  • Odpowiedz
#studbaza #programowanie #jezykc
mireczki, stworzylem liste jednokierunkowa, elementy ktore sa w srodku to 5 intow i jedna tablica znakowa. Moje pytanie brzmi, jak wpisac do niej ciag znakow w ktorym bedzie wystepowala spacja? scanf odpada, gdy probuje
fgets(nowa->nazwa, sizeof nowa->nazwa, stdin);
przy odpalaniu w ogole pomija wpisywanie znakow i rozpoczyna wpisywanie intow, ktore sa na scanfie (one dzialaja poprawnie).
probowalem poprzedzac tego fgetsa fflush(stdin), ale tez
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Pierrdonauta: zacznij od choinki, ktora jest troche prostsza. choinka to cos podobnego co tutaj tylko zamiast liter wstawiasz po prostu gwiazdki. jak juz uporasz sie z choinka to pozostaje jedynie potem zamienic gwiazdki na odpowiednie litery (mozesz sobie do tego napisac funkcje)
  • Odpowiedz
@Pierrdonauta:
Po przeczytaniu zadania można wyciągnąć na przykład takie wnioski:
Podana przez użytkownika litera będzie jednocześnie oznaczać wysokość tej piramidy.
Na przykład dla a będzie po prostu wyświetlone A dla B najpierw A potem poniżej ABA i tak dalej.
Czyli środek będzie wypisywany alfabetycznie od góry do dołu a to jest proste:
for(int i = 'A'; i <= litera;
  • Odpowiedz
@janpostal: hmm nie wiem na ile to related, ale pisanie po 1 znaku pritnfem to trochę kiepski pomysł? nie chodzi czasem o to, żeby wczytywać po linijce? i jakieś tam bufforowanie zaprzęgnąć do roboty?
  • Odpowiedz