abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 20:33 | Zajímavý projekt

Byly zveřejněny schémata, firmware a instrukce pro sestavení trackballu Ploopy. Ten používá Arduino, senzor PMW3360 a 1,75palcovou kouli. Zdrojové soubory jsou šířeny pod open-hardware licencí CERN a GNU GPLv3. Tvar je inspirovaný klasickým trackballem Microsoft Trackball Explorer, jehož výroba byla ukončena kolem roku 2005 bez náhrady; projekt Ploopy se k tomu ale z právních důvodů nehlásí. Již vyrobené díly je možno objednat za 200 kanadských dolarů. Další podrobnosti v příspěvcích uživatele crop_octagon na Redditu.

Fluttershy, yay! | Komentářů: 8
dnes 20:22 | Nová verze

Vyšlo desktopové prostředí KDE Plasma 5.17. Novinkou je např. „noční režim“ (pro X11, nejen Wayland), skrytí upozornění při prezentacích (když je připojena obrazovka se stejným obrazem), lepší podpora HiDPI, optimalizace využití zdrojů a mnoho drobných zlepšení a oprav.

Fluttershy, yay! | Komentářů: 1
dnes 12:55 | Pozvánky

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 169. brněnský sraz, který proběhne v pátek 18. října od 19:00 v restauraci Racek (Jungmanova 5). Před srazem proběhne v 18:00 komentovaná prohlídka nových prostor hackerspacu base48 (přístup je z Mojmírova náměstí).

Ladislav Hagara | Komentářů: 8
dnes 05:55 | Bezpečnostní upozornění

V příkazu sudo byla nalezena a ve verzi 1.8.28 byla již opravena bezpečnostní chyba CVE-2019-14287. V souboru /etc/sudoers lze nastavit, aby daný uživatel mohl konkrétní příkaz spouštět s právy libovolného uživatele (ALL) nebo libovolného uživatele kromě uživatele root (ALL, !root). Spustí-li tento uživatel daný příkaz se sudo s volbou -u#-1 nebo -u#4294967295, tj. pod uživatelem -1 nebo 4294967295, nebude vyžadována autentizace a příkaz se spustí pod právy roota.

Ladislav Hagara | Komentářů: 1
dnes 01:33 | Nová verze

Po více než roce a čtvrt od vydání verze 3.7.0 byla vydána nová verze 3.8.0 programovacího jazyka Python. Přehled novinek v aktualizované dokumentaci. Podrobný přehled změn v Changelogu.

Ladislav Hagara | Komentářů: 14
včera 16:11 | IT novinky

Ke zhlédnutí na Invidious a YouTube je videozáznam rozborky a sborky mobilního telefonu Librem 5.

Ladislav Hagara | Komentářů: 44
včera 13:33 | Komunita

Richard Stallman, zakladatel hnutí svobodného softwaru, se dnes v e-mailové konferenci guix-devel vyjádřil, že svobodný software je apolitický, resp. jedinou přípustnou politikou je politika svobodného softwaru. Reagoval na některé návrhy, že by se do svobodného softwaru měl zabudovat feminismus nebo jiný -ismus. Říká, že témata jako komunismus nebo sexuální orientace jsou „off-topic“. Je v pořádku mít politické názory, ale lidé

… více »
xkucf03 | Komentářů: 92
včera 05:55 | Nová verze

Po téměř dvou letech vývoje od vydání verze 2.0 byla vydána verze 2.1.0 svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 3
13.10. 10:55 | IT novinky

Josef Průša představil novou 3D tiskárnu Original Prusa MINI. Její cena je 9 990 Kč a tisknout lze na ní objekty do velikosti 18 × 18 × 18 cm.

Ladislav Hagara | Komentářů: 41
12.10. 13:11 | Nová verze

Byla vydána nová stabilní verze 3.0 svobodné decentralizované mikroblogovací platformy a sociální sítě podobné Twitteru Mastodon (Wikipedie). Detailní přehled novinek na GitHubu. Projekt lze podpořit na Patreonu. Aktuálně má přislíbeno 5 697 dolarů měsíčně.

Ladislav Hagara | Komentářů: 2
Kdy jste naposledy viděli počítač s připojeným běžícím CRT monitorem?
 (19%)
 (4%)
 (11%)
 (39%)
 (24%)
 (2%)
Celkem 401 hlasů
 Komentářů: 22, poslední 23.9. 08:36
Rozcestník

www.AutoDoc.Cz

Dotaz: C, inicializace stringu

10.10. 00:12 Jirka M.
C, inicializace stringu
Přečteno: 310×
Ahoj,

poreboval bych drobnou radu:

v preprocesoru potebuji poskladar string: kde:

#define BASESTRING "CISLO: " #define CISLO1 1 #define CISLO2 2

programova implementace by byla:

char vystup[16]; sprintf(vystup,"%s%u.%u",BASESTRING,CISLO1,CISLO2);

Nicmene bych potreboval, aby to poskladal preprocesor tj:

const char vystup = ????

resp. vystup by mel vypadat takto: const char vystup = "CISLO: 1.2"

Diky Jirka

Řešení dotazu:


Odpovědi

10.10. 03:49 debian+
Rozbalit Rozbalit vše Re: C, inicializace stringu
Nieco o tom mas na wiki.

A u mna prakticky:
#include <stdio.h>

#define PRE "v"
#define N   "1"
#define N2  "2"
#define S PRE N"."N2
#define SS(a,b) PRE a"."b

int main(int argc, char **argv, char **env)
{
	const char *word = S;
	const char *word2 = SS(N, N2);
	
	puts(word);
	puts(word2);

	return 0;
}

10.10. 08:25 rastos | skóre: 61 | blog: rastos
Rozbalit Rozbalit vše Re: C, inicializace stringu
#define BASESTRING "CISLO: " 
#define CISLO1 1 
#define CISLO2 2 

#include <stdio.h>

#define xstr(s) str(s)
#define str(s) #s

#define CISLO1 1
#define CISLO2 2

...
        const char vystup[]=BASESTRING xstr(CISLO1) "." xstr(CISLO2);

Lebo Stringification a String-Constants
10.10. 08:27 rastos | skóre: 61 | blog: rastos
Rozbalit Rozbalit vše Re: C, inicializace stringu
Eh. Sorry CISLO1 a CISLO2 tam mám omylom #define-ované dvakrát ;-/
10.10. 11:34 debian+
Rozbalit Rozbalit vše Re: C, inicializace stringu
rastos, vies aky je rozdiel medzi nasledovnymi riadkami?
char data[]="meno";
char *data="meno";
const char *data="meno";
10.10. 12:07 ehmmm
Rozbalit Rozbalit vše Re: C, inicializace stringu
Ja to nevim. Jaky?
10.10. 12:32 rastos | skóre: 61 | blog: rastos
Rozbalit Rozbalit vše Re: C, inicializace stringu

riadok 1. - nemôžeš urobiť data=data2. Teda nemôžeš priradiť do premennej typu pole.
riadok 2. - môžeš urobiť data=data2 ak data2 je pointer. Ale napr. sizeof vracia inú hodnotu ako pri riadku 1, v jednom prípade je to veľkosť pointra (na 32 bitovom systéme typicky sizeof povie 4), v druhom prípade sa vráti veľkosť pamäti zabratej poľom - čo je v tomto prípade 5 (4 písmená a '\0')
riadok 3. - nemôžeš urobiť data[i]='x'. Teda: data[i] je "const char" a priradenie je v rozpore s tým "const".

Tipujem, že toto už je iný level debaty než Jirka potrebuje.

10.10. 13:08 debian+
Rozbalit Rozbalit vše Re: C, inicializace stringu
A vies preco? Kedze si opisal, ako to fungujem.

P.S.: co ak chcem vediet co chces. Nikde nie je napisane, ze vo vsetkom, co pouizas musis excelentovat.
10.10. 14:06 rastos | skóre: 61 | blog: rastos
Rozbalit Rozbalit vše Re: C, inicializace stringu
Neviem prečo. A neviem ani čo prečo. A nie som si istý ani či sa pýtaš mňa ;-) Ak náhodou áno, tak preformuluj otázku.
10.10. 14:14 debian+
Rozbalit Rozbalit vše Re: C, inicializace stringu
Skoda, ze som v otazke nenazval inak prepemenne.

Rasto, vies aj kvoli comu je to tak, tj. platia tieto zakonitosti?
10.10. 14:36 rastos | skóre: 61 | blog: rastos
Rozbalit Rozbalit vše Re: C, inicializace stringu

Tá otázka nedáva zmysel.

char *
je iný dátový typ ako
char []
tak sa proste chová inak.

Podobne kľúčové slovo const dáve kompilátoru pokyn, aby niečo robil/nerobil. Nie je to vynútené architektúrou procesora ani božím prikázaním ani ničím podobným. Skrátka jazyk C definuje, že nejaký zápis spôsobuje nejaké chovanie.

10.10. 15:11 MadCatX | skóre: 23 | blog: dev_urandom
Rozbalit Rozbalit vše Re: C, inicializace stringu
Narážíš na to, že řetězce zapsané jako literály, na které je ukazováno char *em jsou ve výsledné binárce uložené v segmentu .rodata a tudíž se nedají modifikovat?

Mezi
      char *s = "Peppa";
const char *t = "Pig";
v principu není rozdíl, akorát v tom druhém případě kompilátor zabrání tomu, aby se někdo pokusil udělat t[0] = 'B'.
10.10. 12:15 rastos | skóre: 61 | blog: rastos
Rozbalit Rozbalit vše Re: C, inicializace stringu
Pokiaľ máš výhrady k tomu, že som použil const char [], tak to povedz. Ale neotáčaj toto vlákno k debate o tom, či ja niečo o C viem alebo neviem.
10.10. 12:59 debian+
Rozbalit Rozbalit vše Re: C, inicializace stringu
Jirka M., pouzivaj funkciu snprintf
Řešení 1× (Josef Kufner)
10.10. 13:26 debian+
Rozbalit Rozbalit vše Re: C, inicializace stringu
Najlepsie napisane:
#include <stdio.h>

#define PREFIX "v"
#define MAJOR  1
#define MINOR  2
#define STR(a) #a
#define VERSION(a,b) PREFIX STR(a) "." STR(b)

int main(int argc, char **argv, char **env)
{
	const char *version = VERSION(MAJOR, MINOR);
	
	puts(version);

	return 0;
}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.