Ir para conteúdo
Fórum Script Brasil

Batoca

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Batoca

Batoca's Achievements

0

Reputação

  1. 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] 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.
×
×
  • Criar Novo...