FILE-Zeiger Datei-Ende Müll
Von: , Frage gestellt am Do, 7. Feb 2008
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 <stdio.h>
#include <conio.h>
#include <fstream>
#include <cassert>
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 = 0;}
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 << neueVersion->c_str();
of.close();
}
delete[] code;
delete neueVersion;
return 0;
}
/////////// hier noch die "artikel.htm":
<html> <head> <title>Umlaute ersetzen</title> </head> <body> <div style="width:30%;"> 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. </div> </body> </html>
