Linus Torvalds vydal jádro Linux 6.19. Podrobný výčet změn je ke zhlédnutí na stránce Kernel Newbies, stručné výběry v LWN (část první, druhá).
Do prodeje jde tichá bezdrátová herní myš Logitech PRO X2 SUPERSTRIKE s analogovými spínači s haptickou odezvou (HITS, Haptic Inductive Trigger System). Cena je 4 459 Kč.
Microsoft na GitHubu zveřejnil zdrojový kód projektu LiteBox, jedná se o 'knihovní operační systém' (library OS) zaměřený na bezpečnost, využívající systémovou architekturu LVBS k ochraně jádra před útoky z uživatelského prostoru. LiteBox je napsán v Rustu a uvolněný pod licencí MIT. Projekt je teprve v rané fázi vývoje.
BreezyBox je open-source shell a virtuální terminál pro populární jednočip ESP32. Nabízí základní unixové příkazy, sledování aktuálního pracovního adresáře (CWD), jednoduchý instalátor a spouštěč aplikací v podobě ELF binárních souborů, zabudovaný HTTP server nebo třeba ovládání WiFi - ukázka použití coby 'malého osobního počítače'. Ačkoliv je BreezyBox inspirovaný BusyBoxem, oproti němu má tento projekt několik externích závislostí, zejména na ESP-IDF SDK. BreezyBox je dostupný pod licencí MIT.
Byl představen cross-assembler xa.sh, napsaný čistě v Bourne shell skriptu. Tento nástroj umožňuje zpracovávat assemblerový kód pro Intel 8080, přičemž je možné snadno přidat podporu i pro další architektury, například 6502 a 6809. Skript využívá pouze různé běžné unixové příkazy jako jsou awk, sed nebo printf. Skript si lze stáhnout z GitHubového repozitáře projektu.
Byla představena nová verze modelu Claude Opus 4.6 od společnosti Anthropic. Jako demonstraci možností Anthropic využil 16 agentů Claude Opus 4.6 k vytvoření kompilátoru jazyka C, napsaného v programovacím jazyce Rust. Claude pracoval téměř autonomně, projekt trval zhruba dva týdny a náklady činily přibližně 20 000 dolarů. Výsledkem je fungující kompilátor o 100 000 řádcích kódu, jehož zdrojový kód je volně dostupný na GitHubu pod licencí Creative Commons.
Kultovní britský seriál The IT Crowd (Ajťáci) oslavil dvacáté výročí svého prvního vysílání. Sitcom o dvou sociálně nemotorných pracovnících a jejich nadřízené zaujal diváky svým humorem a ikonickými hláškami. Seriál, který debutoval v roce 2006, si i po dvou dekádách udržuje silnou fanouškovskou základnu a pravidelně se objevuje v seznamech nejlepších komedií své doby. Nedávné zatčení autora seriálu Grahama Linehana za hatecrime však vyvolává otázku, jestli by tento sitcom v současné Velké Británii vůbec vznikl.
Společnost JetBrains oznámila, že počínaje verzí 2026.1 budou IDE založená na IntelliJ ve výchozím nastavení používat Wayland.
Společnost SpaceX amerického miliardáře Elona Muska podala žádost o vypuštění jednoho milionu satelitů na oběžnou dráhu kolem Země, odkud by pomohly zajistit provoz umělé inteligence (AI) a zároveň šetřily pozemské zdroje. Zatím se ale neví, kdy by se tak mělo stát. V žádosti Federální komisi pro spoje (FCC) se píše, že orbitální datová centra jsou nejúspornějším a energeticky nejúčinnějším způsobem, jak uspokojit rostoucí poptávku po
… více »Byla vydána nová verze 2.53.0 distribuovaného systému správy verzí Git. Přispělo 70 vývojářů, z toho 21 nových. Přehled novinek v poznámkách k vydání.
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
(nebudu se ji vyhýbat za každou cenu), ale vidím to spíše tak, že rozumný programátor použijte to, co je v daném případě lepší a ví kde a jak se, která „rezervace paměti“ provádí…
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: