Učim C++, više ne ide nego ide a dolazim sa VisualBasica.
Sada trebam učitati string iz datoteke binarno kao polje znakova.
String je nastao u DOSu, na CP 852.
Trebam ga promijeniti u string za C++, pregledati svaki znak i zamijeniti HR slova, promijenjenog upisati u drugi file.
Imam ovo:
string charTO;
string myString = ""
int o;
for(o=0;nekiString] !='\0';o++)
{
int a=nekiString[o];
charTO = a; // int to znak
switch (a) // promjeni ako je HR znak
{
case 172:
charTO = 'Č'; // kod svakog HR slova je warning: multi-character character constant
break;
case 143:
charTO = 'Ć';
break;
case 230:
charTO = 'Š';
break;
case 209:
charTO = 'Đ';
break;
case 166:
charTO = 'Ž';
break;
case 159:
charTO = 'č';
break;
case 134:
charTO = 'ć';
break;
case 231:
charTO = 'š';
break;
case 208:
charTO = 'đ';
break;
case 167:
charTO = 'ž';
break;
}
myString=myString+charTO; // dodaj znak na string
}
fprintf (myFile, "%s\n", myString); //tu je greška warning: cannot pass objects of non-POD type ‘struct std::string’ through ‘...’; call will abort at runtime
//i još warning: format ‘%s’ expects type ‘char*’, but argument 3 has type ‘int’
//tu program kod izvršavanja jednostavno "pukne" bez da opiše grešku.
}}
Kod kompajliranja stvar prođe s 22 upozorenja i bez greške.
Ali pukne na liniji fprintf. Radim to na Linuxu s IDE Code::Blocks.
Isto tako, iako file čitam binarno na mjestu slova 'č' charto pokaže znak "/237".
U čemu je tu kvaka i kako to napraviti.