Portál AbcLinuxu, 8. května 2025 04:13
Dobry den,
mam takovou laickou otacku ve starem DOSu jsem pouzival pro vlozeni znaku z ascii tabulky kombinaci Alt + kod_znaku, napr. Alt + 13, Alt + 10, Alt + 92, coz bohuzel na linux konzoli nefunguje (pouzivam KDE4, konzoli prikazem konsole), existuje nejake alternativa jak toto udelat? (potreboval bych v prubehu zadavani pridat do zadavaneho retezce CRLF).
A druha otazka souvisejici, v jazyce C nactu vstup z klavesnice (scanf) do string promene a ted bych rad na konec teto promena pridal opet sekvenci CRLF, lze to udelat pomoci spojovani retezci tedy fce strcat, jak zadam znaky crlf? Pomoci \?
Omlouvam se za hloupy dotaz. Roman
fprintf(fw,"BEGIN:VCALENDAR\r\n"); fprintf(fw,"VERSION:2.0\r\n"); fprintf(fw, "BEGIN:VEVENT\r\n"); fprintf(fw, "SUMMARY:%s\r\n", UTF8toWindows( (char *) linka));UTF8toWindows( (char *) linka) převádí kodování.
/* převod kodování */ char * UTF8toWindows (char * from) { char *p1, *p2; iconv_t i; size_t fromlen, tolen; size_t iconv_value; errno=0; if (strlen(from) > DELKA_POZNAMKY) { perror("ICONV: Poznámka je moc dlouhá."); exit(errno); } memset(convStr,0,sizeof(convStr)); tolen = fromlen = strlen(from); p1 = (char *)from; p2 = (char *)convStr; i = iconv_open("WINDOWS-1250", "UTF-8"); if (i == (iconv_t) -1) { if (errno == EINVAL) perror("ICONV: Nepodporuji převod z UTF-8 do CP1250."); else perror("ICONV: Chyba převodu kodování."); exit(errno); } /* Převod */ /* iconv_value = iconv(i, (const char **)&p1, &fromlen, &p2, &tolen); */ iconv_value = iconv(i, &p1, &fromlen, &p2, &tolen); if (iconv_value == (size_t) -1) { perror ("ICONV: Převod kodování se nepovedl."); exit(errno); } iconv_close(i); return(convStr); }
\x<HEX_NR>
, tj tvoje CRLF by bolo \xa\xd, napriklad "Helo\n\r" vies zapisat ako
fprintf (stdout, "Helo\xa\xd");
/* ale aj ako: */
fprintf (stdout, "\x48\x65\x6c\x6f");
vkladat znak mozes sposobom:
char test[10] = "helo";
test[4] = '\xa';
test[5] = '\xd';
/* alebo aj /*
test[4] = '\n';
test[5] = '\r';
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.