<div>Pripadne mi podezrela kombinace wchar_t a utf8. Zkuste vyhodit vse 16bitove.<br/>
L.<br/>
<br/>
<font color="#888888"><font color="#888888">Sent from </font><font color="#888888"><a href="https://goo.gl/ODgwBb">MailDroid</a></font></font><br/><br/>-----Original Message-----<br/>From: Michal Grunt <michal.grunt@gmail.com><br/>To: HW-news <hw-list@list.hw.cz><br/>Sent: po, 29 srp 2022 20:27<br/>Subject: fgetws<br/><br/></div>Jsem v koncích. Lámu si s tím hlavu už několik hodin. Po překladu (gcc
<br/>
na RPi) a spuštění to hlásí chybu: Neoprávněný přístup do paměti
<br/>
(SIGSEGV)
<br/>
<br/>
Havaruje to na fgetws...
<br/>
<br/>
Příkaz "mpc status | head -n 1" vrátí název stanice nebo interpreta a
<br/>
to v UTF 8 formátu (diakritika).
<br/>
<br/>
Co dělám špatně? Zkoušel jsem nad tím i usilovně přemýšlet :-), ale
<br/>
ani to nepomohlo. Metoda pokus omyl (co najdu po internetu) je také
<br/>
selhala. Níže je uveden jeden z mnoha pokusů.
<br/>
<br/>
Blbý je, že se to ani nedá nějak pořádně debugovat nebo to neumím (na
<br/>
RPi a přístup přes SSH na konzoli).
<br/>
<br/>
Děkuji
<br/>
MG
<br/>
<br/>
#define BUF_LEN 255
<br/>
static wchar_t szwBuffer[BUF_LEN];
<br/>
<br/>
setlocale(LC_CTYPE, "en.UTF-8");
<br/>
<br/>
fp = popen( "mpc status | head -n 1", "r");
<br/>
if (fp == NULL) {
<br/>
printf("Failed to run command\n" );
<br/>
exit(1);
<br/>
}
<br/>
<br/>
fwide(fp,1);
<br/>
while (fgetws(szwBuffer, sizeof(szwBuffer)/sizeof(wchar_t), fp) !=
<br/>
(wchar_t *)NULL);
<br/>
<br/>
wprintf( L"%s\n", szwBuffer);
<br/>
_______________________________________________
<br/>
HW-list mailing list - sponsored by <a href="http://www.HW.cz">www.HW.cz</a>
<br/>
<a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<br/>
<a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
<br/>