Canonical vydal (email) Ubuntu 25.10 Questing Quokka. Přehled novinek v poznámkách k vydání. Jedná se o průběžné vydání s podporou 9 měsíců, tj. do července 2026.
ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzi 1.5.0.
Byla vydána nová verze 1.12.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace.
V Redisu byla nalezena a v upstreamu již opravena kritická zranitelnost CVE-2025-49844 s CVSS 10.0 (RCE, vzdálené spouštění kódu).
Ministr a vicepremiér pro digitalizaci Marian Jurečka dnes oznámil, že přijme rezignaci ředitele Digitální a informační agentury Martina Mesršmída, a to k 23. říjnu 2025. Mesršmíd nabídl svou funkci během minulého víkendu, kdy se DIA potýkala s problémy eDokladů, které některým občanům znepříjemnily využití možnosti prokázat se digitální občankou u volebních komisí při volbách do Poslanecké sněmovny.
Společnost Meta představila OpenZL. Jedná se o open source framework pro kompresi dat s ohledem na jejich formát. Zdrojové kódy jsou k dispozici na GitHubu.
Google postupně zpřístupňuje českým uživatelům Režim AI (AI Mode), tj. nový režim vyhledávání založený na umělé inteligenci. Režim AI nabízí pokročilé uvažování, multimodalitu a možnost prozkoumat jakékoliv téma do hloubky pomocí dodatečných dotazů a užitečných odkazů na weby.
Programovací jazyk Python byl vydán v nové major verzi 3.14.0. Podrobný přehled novinek v aktualizované dokumentaci.
Bylo oznámeno, že Qualcomm kupuje Arduino. Současně byla představena nová deska Arduino UNO Q se dvěma čipy: MPU Qualcomm Dragonwing QRB2210, na kterém může běžet Linux, a MCU STM32U585 a vývojové prostředí Arduino App Lab.
Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.14.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest v říjnu loňského roku přejmenovaný na Luanti.
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: