Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
andre.paris

Leitura de Arquivos em C

Recommended Posts

Olá a todos,

Preciso de fazer um trabalho em C para armazenar alguns números que estão em um arquivo no formato .mtx. No entanto, meu problema é como fazer isso. Veja bem, no arquivo esses números encontram-se na seguinte disposição:

1 21 12

1 13 -1

1 50 1

1 60 -1

E assim por diante...

Tentei fazer com as funções fgetc, fgets e fscanf. Mas elas pegavam apenas o primeiro valor, no caso o 1, ou então a linha inteiro como um string, dependendo da função que usei. No caso da fgets, que pega toda linha, tentei usar a função atoi, fazendo numero = atoi(string[0]), uma vez que converteria primeiro o 1, dps eu faria isso para o 21 e ... Mas não é possível colocar indice dentro da atoi e eu teria o problema com numeros como 21 e numeros negativos, pois representam dois indices, além disso, o arquivo .mtx nem sempre contem o 1 como primeiro valor, podendo conter qql outro como 12, ou seja, eu poderia ter uma primeira linha como sendo 12 1 20, ou qql outra disposição.

Parece bem díficil, mas tem algo que não estou enxergando.

Agradeço a quem souber e puder postar ou me enviar a solução por e-mail.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode pegar uma linha inteira com fgets(), depois usá-la uma sscanf() que é como se fosse um scanf mas em uma string();

sscanf(str, "%d %d %d", &x, &y, &z);

ou usar o fscanf com múltiplos parametros: fscanf(fp, "%d %d %d", &x, &y, &z);

Compartilhar este post


Link para o post
Compartilhar em outros sites
você pode pegar uma linha inteira com fgets(), depois usá-la uma sscanf() que é como se fosse um scanf mas em uma string();

sscanf(str, "%d %d %d", &x, &y, &z);

ou usar o fscanf com múltiplos parametros: fscanf(fp, "%d %d %d", &x, &y, &z);

Eu fiz do fscanf também. Mas o que acontece é que ele está "pulando linhas" para capturar o que quero. Eu tenho um arquivo.mtx assim:

%cabeçalho

números

Eu fiz um fgets e um if desse modo:

while(!feof(matriz)){
fgets( le_arquivo , 10000 , matriz );
if( ler_arquivo[0] == '%')
printf("Eis aqui %\n");
else
{
fscanf(matriz, "%f %f %f" ,&linha, &coluna, &valor);
printf("%f %f %f and %s\n",linha,coluna,valor,le_arquivo);
}

}

No entanto, ao invés dele começar a imprimir os valores imediatamente abaixo da ultima linha com o %, ele está "doidão", começa a imprimir o valor dos numeros abaixo de outros e sem sequencia. Não entendo o porque.

Editado por dif
usar a tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Abro normalmente usando fopen. Esse é um formato utilizado para matrizes esparsas da universidade da california.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×