Ir ao conteúdo
  • Cadastre-se

Pedro Zanutto

Membro Júnior
  • Posts

    8
  • Cadastrado em

  • Última visita

Reputação

0
  1. Consegui, obrigado isrnick e LNW. O resultado (se alguem quiser saber) foi: #include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ FILE *fl = fopen("01.c", "r"); char search[100]; char line[1000]; int done = 0; int i = 0; fgets(search, 100, stdin); search[strlen(search) -1] = 0; do{ fgets(line, 1000, fl); i++; if(strstr(line, search) != NULL){ printf("Linha %d: %s", i, line); done = 1; } }while(!feof(fl)); if(done == 0) printf("Nao foi encontrada a string"); return 0;}
  2. Olá, LNW eu (acho que) fiz o que você me falou, alterei o do while e coloquei o strstr pra dentro do laço ao invés de deixa-lo como condição, ficou assim: #include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ FILE *fl = fopen("01.c", "r"); char search[100]; char line[1000]; char set; int i = 0; fgets(search, 100, stdin); do{ fgets(line, 1000, fl); i++; if(strstr(line, search) != NULL){ printf("Linha %d: %s", i, line); return 0; } }while(!feof(fl)); printf("Nao foi encontrada a string"); return 0;} e o resultado é o mesmo. O que fiz errado?
  3. Opa, venho trazer outro problema aqui pra vocês pessoal, o exercicio é esse: Isso é o que eu fiz: #include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ FILE *fl = fopen("01.c", "r"); char search[100]; char line[1000]; char set; int i = 0; fgets(search, 100, stdin); do{ fgets(line, 1000, fl); i++; }while((strstr(line, search)) == NULL); printf("Linha %d: %s", i, line); return 0;} E o problema é que certos argumentos ele simplesmente fica preso no loop, me parece que esses são palavras reservadas (como int e #include) e variáveis (como i e set, nesse caso). Quando a pesquisa é feita com uma linha inteira, ele acha ela sem problemas.
  4. Opa, valeu isrnick, funcionou direitinho. A parte do for eu até entendi o erro, mas poderia me explicar o que o \n nos scanf(s) mudaram pra dar certo?
  5. Ok, ai vai o conteúdo total do arquivo: HELLO10.0010.0010.00OUTRO2.005.003.50FRIEND3.003.003.00
  6. Incrementando: Emanoel, o que você sugeriu não funcionou, o resultado é um pouco diferente e continua errado. Vai uma imagem do terminal: Acima ainda tem os dados do primeiro "aluno", do mesmo modelo.
  7. Opa, foi mal a demora, eu tinha inicialmete já escrito no mesmo laço, porém como o resultado tinha sido o mesmo eu tentei separar pra ver se achava o erro. O programa é só um exercicios de uma lista antiga da faculdade que o professor recomendou: 6. Faça um programa que leia (do teclado) um cadastro de 10 alunos, indicando o nome, nota1, nota2. Calcule a média aritmética simples dos 10 alunos e depois escreva em um arquivo texto os dados de cada aluno: nome, nota1, nota2 e média. Lembre-se de que as notas e média deverão ser apresentadas como valores que possuem até 2 casas após a vírgula. 7. Faça um programa que leia os dados gerados pelo programa anterior do exercício 6 e mostre na tela as informações referentes aos alunos, calculando também a média geral da turma. LEMBRETE: É bem mais fácil armazenar informações em arquivos do tipo texto, colocando um dado em cada linha (“imitando” a entrada de dados do teclado: dado <enter>, dado <enter>, dado <enter> ...). O que eu estou tendo problema é o 7, mas como ele depende do 6 coloquei também.
  8. Olá pessoal, sou novo no fórum, entrei na universidade esse ano no curso de Eng. Computação e de praxe já venho com meu primeiro post sendo uma dúvida. Vamos lá: O código é esse #include <stdio.h> #include <stdlib.h> int main(){ FILE *fin; char nome[10][40]; float n1[10], n2[10], media[10], geral = 0; int i, j; fin = fopen("alunos.txt", "r"); for(i = 0; !feof(fin); i++){ fgets(nome, 40, fin); fscanf(fin, "%f", &n1); fscanf(fin, "%f", &n2); fscanf(fin, "%f", &media); geral += media; } for(j = 0; j <= i; j++){ printf("Nome do aluno: %s\n", nome[j]); printf("Notas: %.2f %.2f\n", n1[j], n2[j]); printf("Media do aluno: %.2f", media[j]); printf("\n -------------------------------- \n"); } printf("\n\nMedia da sala: %.2f", geral/10); fclose(fin); return 0; } E o problema é que quando o programa roda, ele imprime assim: --------------------- Nome do aluno: nome Notas: n1 n2 Media: media --------------------- (tudo certo até então) Nome do aluno: (VAZIO) Notas: repete as de cima Media: repete as de cima ---------------------- Nome do aluno: nome2 Notas: n1 n2 (novos) Média: media (nova) ---------------------- (tudo certo novamente) Nome do aluno: (VAZIO) Notas: repete as de cima Media: repete as de cima ---------------------- Media da sala: geral/10 (valor correto) -- Sugestões?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...