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

Problema Em Código Que Lê Arquivo


Guest Jamil

Pergunta

Olá

Eu fiz um código que acessa uma arquivo a.txt onde possuem 1000 palavras com a letra "a" da língua portuguesa, todas separadas por linha, cada linha uma palavra diferente...

E quero que meu programa imprima na tela as palavras que contenham apenas as letras o,c,d,g,i,a,v,n,k e em certas quantidades específicas para cada letra...

Porém o programa pega a primeira palavra do a.txt que por um acaso não possue só as letras que eu queria, imprime, e vai para o system("pause") para acabar a execução...

obs.: quando eu tiro o "for", e deixo só um printf("%s", str); no while no lugar desse "for" que tirei, meu programa lê TODAS as palavras do a.txt e imprime na tela certinho... claro, sem fazer os testes que preciso...

Qual o erro aparente para o que quero fazer???

#include "stdio.h"
#include "stdlib.h"
int main(int argc, char *argv[])
{
        FILE *fp;
        char str[50];
        int z,o=0,c=0,d=0,g=0,i=0,a=0,v=0,n=0,k=1;
        fp = fopen("a.txt","r");   
  
  while (!feof(fp))
        {
                fscanf(fp,"%s",str);
                
                for(z=0; str[z] != '\0' && k == 1; z++)
  {
           if(str[z]== 'c')
           c++;
           else if(str[z]== 'd')
           d++;
           else if(str[z]== 'g')
           g++;
           else if(str[z]== 'i')
           i++;
           else if(str[z]== 'a')
           a++;
           else if(str[z]== 'v')
           v++;
           else if(str[z]== 'n')
           n++;
           else if(str[z]== 'o')
           o++;
           else
           k=0;
           
           if(o>3)
           k=0;
           if(c>2)
           k=0;
           if(d>2)
           k=0;
           if(g>1)
           k=0;
           if(i>3)
           k=0;
           if(a>1)
           k=0;
           if(v>1)
           k=0;
           if(n>1)
           k=0;
           
           if(k==1)
           printf("%s\n", str);   
           
  }
                
        }
        
  fclose(fp);
  system("PAUSE");    
  return 0;
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Não teria haver com aquele "k == 1" no for? Pelo que vi no código, o k só é 1 da primeira vez, e depois disso você só atribui zero a ele (dentro do loop). Portanto, ele nunca volta a ser 1. E, como a palavra só imprime se ele for 1, só vai imprimir a primeira (porque da primeira vez ele é 1).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

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...