Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Desenvolvi a seguinte função para substituir os caracteres especiais do html pelos respectivos caracteres em strings:
const int numHTMLSpecialChars = 29;
const char* HTMLSpecialChars[][2] = { { "<", "<" }, { ">", ">" }, {
"&", "&" }, { "á", "á" }, { "â", "â" }, { "à",
"à" }, { "ã", "ã" }, { "ç", "ç" }, { "é", "é" }, {
"ê", "ê" }, { "í", "í" }, { "ó", "ó" }, {
"ô", "ô" }, { "õ", "õ" }, { "ú", "ú" }, { "ü",
"ü" }, { "Á", "Á" }, { "Â", "Â" }, { "À", "À" }, {
"Ã", "Ã" }, { "Ç", "Ç" }, { "É", "É" }, {
"Ê", "Ê" }, { "Í", "Í" }, { "Ó", "Ó" }, {
"Ô", "Ô" }, { "Õ", "Õ" }, { "Ú", "Ú" }, { "Ü",
"Ü" } };
void removeHTMLSpecialChars(char* str) {
char* ptr;
int a;
int dif;
for (a = 0; a < numHTMLSpecialChars; a++) {
while (1) {
ptr = strstr(str, HTMLSpecialChars[a][0]);
if (ptr == NULL) {
break;
}
strcpy(ptr, HTMLSpecialChars[a][1]);
dif = strlen(HTMLSpecialChars[a][0]);
if (dif == 0) {
continue;
}
strcpy(ptr + strlen(HTMLSpecialChars[a][1]), ptr + dif);
printf("%s\n", str); //So p/ testar
}
}
}
int main(int argc, char* argv[]) {
char teste[80];
strcpy(teste, "áténção");
FILE* file;
removeHTMLSpecialChars(teste);
file = fopen("teste", "a");
fprintf(file, "%s\n", teste);
fclose(file);
}
Bom, quando rodo o programa, ele responde:
áténçãoáténção
áténção
áténção
Era o esperado, mas no arquivo "teste" a resposta e diferente:
áténção
Creio que o problema seja devido à codificação do arquivo de texto.
Como fazer com que o programa imprima os caracteres corretamente no arquivo de texto?
Obrigado
Carregando comentários...