Ir ao conteúdo
  • Cadastre-se

Dúvida com strcmp em C


CarolPM

Posts recomendados

Bem, eu estava fazendo um programa onde eu preciso usar a função 'strcmp' da biblioteca 'string.h'... Meu problema é:(vou dar em forma de exemplo)

Digamos que eu tenha o código abaixo:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char comando[4];
int i;
printf("Digite letras:");
for(i=0;i<4;i++)
scanf("%c",&comando[i]);
for(i=0;i<4;i++)
printf("%c",comando[i]);
if(strcmp(comando,"elm ")==0)
printf("\nyes");
return 0;
}

Suponha que a entrada tenha sido:

'elm ' (elm seguido de um 'espaço')

Eu quero agora usar a função strcmp para verificar se minha entrada é igual à condição:

if(strcmp(comando,"elm ")==0)

Porém como fazer pra ele identificar o 'espaço' na condição e dar como saída 'yes'?:

if(strcmp(comando,"elm ")==0)
printf("\nyes");

Desde já, Agradeço!

Link para o comentário
Compartilhar em outros sites

Na verdade o que vai causar erro no seu programa é a função scanf. Isso tem a ver com o "enter" que o usuário pressiona depois de cada caractere. Isso gera lixo no buffer ai a função coloca o calor '/n' no próximo caractere. A função de comparação entre as strings esta sendo utilizada corretamente.

Link para o comentário
Compartilhar em outros sites

A biblioteca string.h contém uma função chamada gets(char *str) que lẽ uma string do teclado e armazena em str. Veja seu programa refeito.


#include <stdio.h>
#include <string.h>

int main()
{
char comando[5];//são 5 caracteres pois em uma string existe um caractere a mais
printf("Digite letras:");
gets(comando);
printf("%s", comando);
if(strcmp(comando,"elm ")==0)
printf("\nyes");
return 0;
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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