Dětem začala škola a nedobrovolně se tak musí vzdělávat. Avšak pro dospělé, kteří se chtějí vzdělávat nebo naopak se o vědomosti podělit, je tu Virtuální Bastlírna - jako každý měsíc si můžete online a zdarma nezávazně popovídat o vědě a technice nejen s bastlíři, ale i s vývojáři, vědci nebo profesory. A čemu se strahováci budou věnovat? Blíží se KiCAD 11 s nespočtem novinek, z nichž zde musí zmínit alespoň možnost kótování a závislostí z
… více »Asahi Linux, tj. Linux pro Apple Silicon, oficiálně podporuje čipy M3 (M3, M3 Pro a M3 Max).
Společnost Acer oslavila 50 let. Na tiskové konferenci next@acer představila řadu novinek. Vypíchnout lze přenosný ePaper displej Acer EP130K, přenosné řešení se třemi displeji Acer PD163Q P3 nebo herní handheld a notebook v jednom DualPlay Mini.
Server SiFive BigSky SF-2U870 2U je založený na jádře SiFive P870-D, zatím je naintegrovaných 32 jader 256 GB RAM 2 GHz, škálovat lze do 256 jader na čip. O něco podrobnější popis serveru v článku SiFive BigSky Ships the First RISC-V Server. Is the GPU Head Node the Prize? na futurumgroup.com. Asi ani tento čip nebude na úrovni nejlepších 64-bit ARMů a AMD Zenů, ale splňuje RVA23 specifikaci a je podporovaný Ubuntu 26.04 LTS a RHEL 10. V článku je
… více »Na YouTube lze zhlédnout nový celovečerní dokumentární film The Story of VS Code | Official Documentary věnovaný Visual Studio Code.
Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 26.08.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
Byla vydána nová stabilní verze 8.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 152. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána nová stabilní verze 4.0 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). S rozhraním přepsaným do Qt. Přehled novinek také na YouTube. Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.
NVIDIA kupuje Hugging Face za 12,93 miliardy dolarů.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define RADKY 5
#define DELKA 256
int main(void) {
char **text;
int i;
/* Alokace pole. */
text=(char **) malloc(RADKY*sizeof(char *));
for (i=0; i<RADKY; i++)
text[i]=(char *) malloc(DELKA*sizeof(char));
/* Neco do nej dame. */
strcpy(text[0], "prvni");
strcpy(text[1], "druhy");
/* Zkusime to vytisknout. */
printf("%s", text[0]);
/* Uvolneni pole. */
for (i=0; i<RADKY; i++) free(text[i]);
free(text);
return(0);
}
Místo RADKY a DELKA můžeš mít libvolnou proměnnou typu int. Nezapomeň, že dvourozměrné pole musíš uvolňovat ve dvou krocích. Snad jsem to trefil, kdyžtak napiš mail.
typedef struct {
char *radek;
struct *radek;
} radek;
(ted si nejsem jisty syntaxi) a pak postupne pridavat prvky..
no a zpetne prochazeni taky bude horor...
cili jednoducha funkce v C na to neexistuje, moznosti jsou: naprogramovat si to sam, pouzit C++ (asi nejlepsi volba) nebo pouzit nejaky script jazyk
printf("Zadej pocet radku: ");
scanf("%d", &radky);
tak pak muj priklad funguje, staci misto RADKY napsat radky:
/* Alokace pole. */
text=(char **) malloc(radky*sizeof(char *));
for (i=0; i<radky; i++)
text[i]=(char *) malloc(DELKA*sizeof(char));
a je to jednodussi.
typedef struct {
char *retezec;
radek *dalsi;
radek *predchozi;
} radek;
Tohle resi docela dobre zpetne prochazeni a je to myslim dobre.
jinak me ale jste napadla jedna vec kterou pozuivam kdyz nejde o moc dat a hodi se s nima pracovat jako s polem (typicky zpracovani dat ve fortranu), pak lze pouzit pole tak,
ze se nejprve naplni 2 prvky, kdyz to nestaci tak se 2 prekkopiruji do 4 prvkoveho pole, kdyz ani
to ne, tak se prekopiruje 4 prvky a vytvori 16 atd... velmi sikovne a rychle, bohuzel trochu zrout pameti..
, ale v tomto pripade, kdy by se alokovalo jen 4byte pole ukazatelu na stringy je to urcite lepsi nez se drbat se zasobnikem
typedef struct {
char *retezec;
radek *dalsi;
radek *predchozi;
} radek;
by melo byt:
typedef struct s_radek {
char *retezec;
struct s_radek *dalsi;
struct s_radek *predchozi;
} radek;
Protoze radek neni tou dobou jeste deklarovan, ale struct s_radek jiz ano.
několik takových struktur je třeba v glib.
gcc umožňuje int foo(int n) { char *p[n]; ... }, ale standardní C bohužel ne.
Jinak je třeba použít malloc/alloca...
Tiskni
Sdílej: