Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.
Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.
Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.
Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).
Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.
Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.
Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.
Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou
… více »FILE *p_f=fopen("soubor.txt","r+");, soubor přitom soubor existuje. Dále mám
if(p_f==NULL){ printf("Chyba pri otevirani souboru\n"); fclose(p_f); }. Všechny potřebné knihovny jsou inkluovány, tak nevím kde je chyba. Googlem brázdím něco přes hodinu a půl a na nic jsem nepřišel. Jen jsem zjistil, že je tam potřeba použít fce malloc, bohužel jsem začátečník, tak nevím jak dál. Používám pro studium knihu od K&R. Díky všem za nápady.
Řešení dotazu:
if ((vstup=fopen("soubor.txt","r"))) { /* zpracování ... */ fclose(vstup); } else printf("Nelze otevřít soubor pro čtení!\n\a");
if ((vstup=fopen("soubor.txt","r"))) { if((fgets(pointer,10000000,vstup))==NULL) { printf("Chyba 1 \n"); } pointer=druhe_pole; if((fgets(pointer,10000000,vstup))==NULL) { printf("Chyba 2 \n"); } fclose(vstup); } else { printf("Chyba pri otevirani souboru\n\a"); }Váš kód mi fungoval bezproblému, děkuji za něj, bohužel, i když jsem to spravil, nepomohlo to.
pointer
, máte tam rezervováno místo pro 10 000 000 bytů (charů) na to dám krk #include <stdio.h> #include <stdlib.h> #define MY_SIZE (100000) //main.cpp int main(int argc, char **argv) { char *pointer = NULL; char *prvni_pole = NULL; char *druhe_pole = NULL; if((prvni_pole = (char*) malloc(sizeof(char) * MY_SIZE)) == NULL) { printf("Chyba 0-1, nedostatek paměti\n"); exit(3); } if((druhe_pole = (char*) malloc(sizeof(char) * MY_SIZE)) == NULL) { printf("Chyba 0-2, nedostatek paměti\n"); free(prvni_pole); exit(3); } //aspon prvni_pole[0] = druhe_pole[0] = 0x0; //nebo cela alokovana pamet: //memset(prvni_pole,0x0,MY_SIZE); //memset(druhe_pole,0x0,MY_SIZE); FILE *vstup; if ((vstup=fopen("soubor.txt","r")) == NULL) { printf("Chyba pri otevirani souboru\n"); exit(3); } //ukazatel na první pole i když se m;že použít přímo prvni_pole pointer = prvni_pole; if((fgets(pointer,MY_SIZE,vstup))==NULL) { printf("Chyba 1 \n"); } if(feof(vstup)){ printf("Chyba uz tam teho vice není\n"); } else { //ukazatel na druhe pole i když se může použít přímo druhe_pole pointer=druhe_pole; if((fgets(pointer,MY_SIZE,vstup))==NULL) { printf("Chyba 2 \n"); } } //obvykle netestuje návratovou hodnotu fclose(vstup); printf("prvni_pole: %s\n",prvni_pole); printf("druhe_pole: %s\n",druhe_pole); //neuskodi pointer=NULL; if(prvni_pole != NULL)//fcil zbytecne free(prvni_pole); //mozna dobry navyk prvni_pole=NULL; if(druhe_pole != NULL)//fcil zbytecne free(druhe_pole); //mozna dobry navyk druhe_pole=NULL; return 0; }
char prvni_pole[MY_SIZE];? Dynamicke alokaci se snazi clovek co nejvice vyhnout...
Proc proboha alokujes pole dynamicky?Protože 20MB (dle původního dotazu) nechci jinak.
Dynamicka alokace je mnohem pomalejsi, nez staticka.Rozdíl rychlosti alokace bude neměřitelný a výsledek možná opačný pokud proměnné budou mimo fci main.
Co ti brani v tom, pouzit…Brání mi rozum a ohled na ostatní.
Dynamicke alokaci se snazi clovek co nejvice vyhnout...Dle této definice nejsem člověk
FILE *fp; if ((fp = fopen("myfile", "r")) == NULL ) { perror("unable to open file"); return -1; } /* praca so suborom a nasledne close */ fclose(fp); return 0;pri uceni je vhodne pouzit aj debugger, napriklad
gdb
. google ti da vela quick howto ako co .. v tvojom pripadne napriklad:
$ gcc -g -o atest test.c
$ ./atest
attempt to close empty null handle
Segmentation fault: 11 (core dumped)
$
$ gdb ./atest atest.core
GNU gdb 6.1.1 [FreeBSD]
--[snip]--
(gdb) where
#0 0x0000000800719e37 in fclose () from /lib/libc.so.7
#1 0x0000000000400686 in main () at test.c:8
(gdb) list 8
3 int main() {
4 FILE *p_f = fopen("soubor.txt","r+");
5
6 if(p_f == NULL ) {
7 fprintf(stderr, "attempt to close empty null handle\n");
--- vystup z where -> 8 fclose(p_f);
9 }
10
11 return 0;
12 }
kde atest
je tvoj spustitelny program, core file sa vygeneroval po segfaulte.
Tiskni
Sdílej: