fgetws

Nesvacil Jiri nesvacil na posys.eu
Úterý Srpen 30 08:41:30 CEST 2022


Zdravim,

jak jsem psal ?

Pokud Vám fgetws vrátí null a v szwBuffer nebude ukonceni retezce, jak 
dopadne wprintf ?

Nebo pokud nebudete cist na hrane encodovatelnosti znaku, ten buffer 255 
zrovna neni deliteny

Neco mate tady 
https://stackoverflow.com/questions/38160929/reading-utf-8-from-stdin-using-fgets-on-windows

Obecne se vsude prechazi na utf-8. Nasel bych si metody/zpusob jak cist 
po slovech ci po radku, abych zarucil, ze se nedostanu na hranu nebo 
pouzil metody, ktere zaruci jiz to vnitrni encodovani, ze vrati cely 
znak nebo nic.

Vubec nejlepe prejit do golang nebo javascriptu... lua. Prace s retezci 
a alokace neni silna stranka C, nejspise se tam dopustite spoustu 
neumyslnych chyb. Nebo si napiste sve knihovny na retezce, tak to delame.

Jirka


Dne 29.08.2022 v 20:27 Michal Grunt napsal(a):
> Jsem v koncích. Lámu si s tím hlavu už několik hodin. Po překladu (gcc
> na RPi) a spuštění to hlásí chybu: Neoprávněný přístup do paměti
> (SIGSEGV)
>
> Havaruje to na fgetws...
>
> Příkaz "mpc status | head -n 1" vrátí název stanice nebo interpreta a
> to v UTF 8 formátu (diakritika).
>
> Co dělám špatně? Zkoušel jsem nad tím i usilovně přemýšlet :-), ale
> ani to nepomohlo. Metoda pokus omyl (co najdu po internetu) je také
> selhala. Níže je uveden jeden z mnoha pokusů.
>
> Blbý je, že se to ani nedá nějak pořádně debugovat nebo to neumím (na
> RPi a přístup přes SSH na konzoli).
>
> Děkuji
> MG
>
> #define BUF_LEN 255
> static wchar_t szwBuffer[BUF_LEN];
>
> setlocale(LC_CTYPE, "en.UTF-8");
>
> fp = popen( "mpc status | head -n 1", "r");
> if (fp == NULL) {
>     printf("Failed to run command\n" );
>     exit(1);
> }
>
> fwide(fp,1);
> while (fgetws(szwBuffer, sizeof(szwBuffer)/sizeof(wchar_t), fp) !=
> (wchar_t *)NULL);
>
> wprintf( L"%s\n", szwBuffer);
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list