V repozitáři AUR (Arch User Repository) linuxové distribuce Arch Linux byly nalezeny a odstraněny tři balíčky s malwarem. Jedná se o librewolf-fix-bin, firefox-patch-bin a zen-browser-patched-bin.
Dle plánu by Debian 13 s kódovým názvem Trixie měl vyjít v sobotu 9. srpna.
Vývoj linuxové distribuce Clear Linux (Wikipedie) vyvíjené společností Intel a optimalizováné pro jejich procesory byl oficiálně ukončen.
Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie).
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 12.0 (Mastodon). Forgejo je fork Gitei.
Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 155 (pdf) a Hello World 27 (pdf).
Hyprland, tj. kompozitor pro Wayland zaměřený na dláždění okny a zároveň grafické efekty, byl vydán ve verzi 0.50.0. Podrobný přehled novinek na GitHubu.
Patrick Volkerding oznámil před dvaatřiceti lety vydání Slackware Linuxu 1.00. Slackware Linux byl tenkrát k dispozici na 3,5 palcových disketách. Základní systém byl na 13 disketách. Kdo chtěl grafiku, potřeboval dalších 11 disket. Slackware Linux 1.00 byl postaven na Linuxu .99pl11 Alpha, libc 4.4.1, g++ 2.4.5 a XFree86 1.3.
Ministerstvo pro místní rozvoj (MMR) jako první orgán státní správy v Česku spustilo takzvaný „bug bounty“ program pro odhalování bezpečnostních rizik a zranitelných míst ve svých informačních systémech. Za nalezení kritické zranitelnosti nabízí veřejnosti odměnu 1000 eur, v případě vysoké závažnosti je to 500 eur. Program se inspiruje přístupy běžnými v komerčním sektoru nebo ve veřejné sféře v zahraničí.
Vláda dne 16. července 2025 schválila návrh nového jednotného vizuálního stylu státní správy. Vytvořilo jej na základě veřejné soutěže studio Najbrt. Náklady na přípravu návrhu a metodiky činily tři miliony korun. Modernizovaný dvouocasý lev vychází z malého státního znaku. Vizuální styl doprovází originální písmo Czechia Sans.
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: