Jump to content

Filtrar elementos


CuecaoXD
 Share

Recommended Posts

Isso está fazer, introduzo o numero de artigos que quero depois pede o numero e a descrição, depois no while vai apresentar como ficou no ficheiro, e o que não estou a conseguir fazer, ao apresentar o que queria era que só apresentasse os artigos cujo o seu código fosse inferior a 200, já experimentei com um if mas provavelmente fiz mal

#include <stdio.h>

typedef struct{
int codigo;
char descricao[50];
}ARTIGO;

int main()
{
int num_artig,i,j;  
char caracter;

printf("Introduza o número de artigos a introduzir: ");
scanf("%d",&num_artig);

ARTIGO artigos[num_artig];
FILE *ficheiro;

ficheiro=fopen("Artigos.txt","a");
for(i=0;i<num_artig;i++){
printf("Introduza o codigo do artigo: ");
scanf("%d",&artigos[i].codigo);
printf("Introduza a descriçao do artigo: ");
scanf("%s", artigos[i].descricao);

fprintf(ficheiro,"%d",artigos[i].codigo);
fprintf(ficheiro,"\n");

for(j=0;artigos[i].descricao[j]!='\0';j++){
fputc(artigos[i].descricao[j],ficheiro);
}
fprintf(ficheiro,"\n");
}
fclose(ficheiro);

ficheiro=fopen("Artigos.txt","r");
while((caracter=fgetc(ficheiro))!=EOF){
putchar(caracter);
}
fclose(ficheiro);
return 0;
}
Link to comment
Share on other sites

Boas,

experimenta algo assim:

while( (fscanf(ficheiro,"%s %s %s\n", &num_artig, &codigo, &descricao))!=EOF )
{
if(codigo <= 200){

printf(codigo "%s, num_artig %s - descricao %s\n", nome, (codigo+num_artig+descricao));
}
}
fclose(ficheiro);

O codigo não foi testado, mas penso que à partida funcionará

Tens aqui um link com algumas dicas de como ir buscar variaveis a um arquivo txt, acho que o problema é ai.

http://www.cprogressivo.net/2013/11/Como-ler-arquivos-em-C-As-funcoes-fgetc-fscanf-fgets.html

Edited by alpharroba
Link to comment
Share on other sites

HappyHippyHippo

epa .. já é o segundo tópico sobre exactamente o mesmo problema, mas que raio de professor ensina fazer o output de uma string desta maneira ?

for(j=0;artigos[i].descricao[j]!='\0';j++){
fputc(artigos[i].descricao[j],ficheiro);
}
  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Está a dar mal, o que eu penso que tenho de fazer é ler as linhas impares porque sao as do codigo, depois ler as linhas pares que é a descrição.

Nas linhas impares sei que vou ter de ler a linha ate ao fim e tenhno de por numa string o numero de caracteres e transformar o vetor de caracteres em inteiro. sei que é a função atoi

Nas linhas pares só vou imprimir o char (putchar) se o código da linha anterior for <= 200

Mas nao sei como fazelo

Edited by CuecaoXD
Link to comment
Share on other sites

Não até posso enviar o enunciado:

Escrever um programa em C que permita acrescentar no ficheiro Artigos os dados Código e Descrição(cada dado deverá ficar numa linha, respeitando a ordem dos dados no ficheiro) dos artigos vendidos na loja. Se o ficheiro não exitir deverá se criado.

Quando terminar a introdução de dados, deverão ser apresentados os dados de todos os artigos cujo código seja inferior a 200(os dados de 1 a artigo ficarão todos na mesma linha).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.