Ir ao conteúdo
  • Cadastre-se
cardano

Dúvida,iniciante C

Recommended Posts

Galera,sou iniciante em programação e estou tentando aprender C.Estou utilizando o code-blocks(13.12) e está acontecendo algo inesperado quando eu dou "run".A minha dúvida é porque ele está sempre retornando zero e não está retornando  a string que eu pedi ? o objetivo era escrever um pedaço da palavra e ele retornar uma das frases.sinceramente não estou vendo onde está o erro.Será que alguém pode me ajudar?

 

#include <stdio.h>#include <string.h>char tracks[ ][80] = {"I left my heart in Harvard Med School","Newark,Newark -a wonderful town","Dancing with a Dork","From here to maternity","The girl from Iwo Jima",};void find_track(char search_for[ ]){    int i;    for (i=0; i<5 ; i++)        {        if (strstr(tracks[i],search_for))        printf("track %i:'%s'\n", i ,tracks[i]);        }}int main(){    char search_for[80];    printf("Search for:");    fgets(search_for, 80,stdin);    find_track(search_for);    return 0;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

@cardano

 

O problema é que fgets() inclui o caractere de newline '\n' no final da string e isso está atrapalhando a busca.

 

Basta remover esse caractere do final da string lida. Ou use outra função:

scanf("%79[^\n]", search_for);

[ ]'s

LNW

Compartilhar este post


Link para o post
Compartilhar em outros sites

em primeiro lugar,obrigado,a dica do scanf deu certo.

mas ainda não entendi a parte do fgets, se você está se referindo ao '\n' do printf  eu removi e rodei de novo ,aconteceu novamente o erro que eu comentei,e também não entendi,como assim atrapalhando a busca ? ele está contando a mais ? 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando o usuário digita uma string, ele aperta a tecla ENTER para confirmar a operação.

Esse mesmo ENTER também serve para fazermos quebra de linha em um texto qualquer.

É exatamente esse código do ENTER ('\n') que a função "fgets()" inclui no final string, antes do terminador ('\0').

Att.

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×