
zerotres
(usa Outra)
Enviado em 13/05/2013 - 16:39h
Desenvolvi a seguinte função.
Inicialmente ela percorre um arquivo em busca de um caractere gráfico.
Ao encontrar, ele grava cada caractere gráfico subsequente na variável string até encontrar um caractere não gráfico. (obtem palavras no arquivo)
Retorna EOF se encontrar o fim do arquivo ou o número de caracteres percorridos no arquivo se uma palavra for obtida.
int getWord(FILE *file, char *string) {
/* A função considera palavra qualquer junção de caractere GRÁFICO */
int contador = 0; /* Conta o número de caracteres lidos no arquivo */
/* Percorre o arquivo a procura da primeira palavra */
while(!isgraph(*string = fgetc(file))) {
++contador;
if(feof(file)) return EOF;
}
/* Grava a palavra na string passada por referência */
while(isgraph(*string)) {
++contador;
*(++string) = fgetc(file);
}
*string = NULL;
return contador;
}
O problema é que quando simulei, ele não considera caracteres especiais - como é, ú, ç, ã - como caracteres gráficos.
Oque devo fazer? ouvi falar de wchat_t e setlocale, mas não sei como usar.