Ir para conteúdo
Fórum Script Brasil
  • 0

Leitura de Arquivo (C)


Batoca

Pergunta

Estou com problemas ao tentar ler alguns dados de um arquivo em C.

Já tentei várias métodos de leitura e já pesquisei durante um tempo razoável, mas sem sucesso (ainda).

Preciso ler caracteres unicode(utf-16 [padrão do Windows?]) de um arquivo. Estive tentando com wchar_t, já que o tipo básico char não é adequado (apenas 1 byte) . As linhas de meu arquivo seguem o seguinte padrão de tipo de dados:

[wchar_t][wchar_t][unsigned long]

exemplo:

á,1000

ù,566

Observe que o segundo caracter é sempre uma vírgula (",").

Sempre que imprimo o que acabei de ler do arquivo, sai caracteres diferentes dos esperados (coloco "é" aparece "Ú", por exemplo). O unsigned long particularmente não tenho tido problemas.

Vou colocar os trechos principais da leitura aqui, das diversas formas que tentei. Utilizo Dev-C++ 4.9.9.2.

Variáveis:

wchar_t caracter, virgula;
unsigned long ocorrencia;
Tamanho do wchar_t:
printf("\nTamanho do wchar_t = %d",sizeof(wchar_t));
-- Esse printf me retorna 2(dois)...[bytes ou 16 bits casando com o tamanho do utf-16 (ao menos teoricamente)]
Tentativas:
while(!feof(arquivoEntrada))
{
fscanf(arquivoEntrada,"%lc%lc%lu\n", &caracter, &virgula, &ocorrencia);
printf("\n %lc %lc %lu ", caracter, virgula, ocorrencia);
}

--Aqui também já consegui ler sem esse "\n", apenas utilizando uma variável auxiliar qualquer para lê-lo.
--Os conversores "lc" podem ser substitudos por "C" (maíusculo).
setlocale(LC_CTYPE, "");

while (WEOF != (letra = getwc(arquivoEntrada)))
{
        printf("Char %lc",caracter);
        getchar();
}

--Sinceramente, esse setlocale foi puramente experimental.
wchar_t caracteres[2];

//Algum loop aqui...
fread(caracteres, sizeof(wchar_t),2,arquivoEntrada);
fread(ocorrencia,sizeof(unsigned long),1,arquivoEntrada);

--Aqui também já li o "\n" e modifiquei bastante quase tentativa e erro  :(

Também já utilizei o fgetws() e também sem resultados... geralmente tenho alguns problemas inicialmente quando tento algo nvo, mas depois que arrumo o código, todos apresentam basicamente a mesma saída errada. O arquivo (.txt) está no formato Unicode, já fiz alguns testes também em ANSI. Provavelmente tem um erro teórico relacionado a codificação de textos...

Espero que me ajudem, já postei esta dúvida em muitos fóruns ;P

Abraços e agradeço desde já só por ter lido a minha dúvida.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...