Byla vydána nová stabilní verze 7.6 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 140. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána verze 1.90.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.25.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
Byla vydána nová major verze 7.0 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově je postavena je na Debianu 13 (Trixie) a GNOME 48 (Bengaluru). Další novinky v příslušném seznamu.
Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.
Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.
Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.
Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).
Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.
Věra Pohlová před 26 lety: „Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala“. Jde o odpověď na anketní otázku deníku Metro vydaného 17. září 1999 na téma zneužití údajů o sporožirových účtech klientů České spořitelny.
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: