Hallo Leute,
Ich habe den Tip von Peter beherzigt und eine Null am Ende der Datei angehängt.
Die Zeichen ‚ÿ‘ (152) am Ende der Datei sind jetzt *weniger* als zuvor,
treten aber immer noch auf.
Unten dran ist der Code.
vielen Dank für Eure Mühe
lg
Martin B
//////////////////////////
// htmlproc.cpp
// Umlaute bei HTML ersetzen, C++ - Compiler, Consolen-Projekt
// ich habe: WIN2K, VC6
#include
#include
#include
#include
using namespace std;
typedef const char \* CC;
string\* umlauteMaskieren (CC code)
{
string \*s = 0;
s = new string;
assert (s);
bool literalerBereich = 0;
for (int i=0; code[i]; i++)
{
char ch = code[i];
if (ch == '') {literalerBereich = 1;}
// in der Marke drin:
if (! literalerBereich) {\*s += ch; continue;}
switch (ch)
{
case 'ä': \*s += "ä"; break;
case 'ö': \*s += "ö"; break;
case 'ü': \*s += "ü"; break;
case 'Ä': \*s += "Ä"; break;
case 'Ö': \*s += "Ö"; break;
case 'Ü': \*s += "Ü"; break;
case 'ß': \*s += "ß"; break;
case 34: \*s += """; break;
default: \*s += ch; break;
}
}
// Datei-Ende:
\*s += '\0';
return s;
}
int main()
{
ifstream in("artikel.htm");
if (! in.good()) { printf("cannot open file!\n"); return -1;}
char\* code = new char[2000];
int i;
for (i=0; in.good(); i++)
{code[i] = in.get();}
code[i] = 0;
in.close();
string \*neueVersion = 0;
neueVersion = umlauteMaskieren( code );
char \*wohin = "artikel2.htm";
if (1)
{
FILE \*out = fopen (wohin, "wt");
fprintf(out, "%s%c", neueVersion-\>c\_str(), EOF);
fclose(out);
}
else {
ofstream of (wohin);
of c\_str();
of.close();
}
delete[] code;
delete neueVersion;
return 0;
}
/////////// hier noch die „artikel.htm“:
Umlaute ersetzen
Bei Wörtern wie "Böller" oder "Müll" sind Umlaute drin.
Die Österreicher werden sich dran gewöhnen müssen, daß sie den Türken sehr
ähnlich sind. Die bösen Übeltäter sitzen woanders. Ähren sind Bäume.
Ein "muß" ist obszön.