Ir para conteúdo

POWERED BY:

Arquivado

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

Cornelius

[Resolvido] no comando strcmp

Recommended Posts

Estou com dificuldades para comparar strings. Fiz um código básico para entender melhor mais não vai, dêem uma olhada:

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

int main()
{
   char nome[5],cnome[5];
   int ok;

   printf("Digite seu nome\n");
   scanf("%s",&nome);
   printf("Digite outro nome\n");
   scanf("%s",&cnome);   
   ok=strcmp(nome,cnome);
   printf("%d",&ok);

	system("pause");
}

Se alguém tiver uma idéia ou um site legal para entender melhor, eu agradeço. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideal nesse caso é usar a função fgets para ler a string.

Com ela voce limita a quantidade de caracteres a serem lidos.

 

Procure aqui no fórum tem muito material sobre ela.

 

strcmp retorna "0" se as strings forem iguais.

 

Em printf voce quer imprimir o endereço da variável ou conteúdo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então kandrade, bom ter perguntado: olha só o parte do código:

 

int incluir_nota()
{
   int i; 
   char cnome[15];
   
   printf("Digite seu nome\n");
   fgets(cnome,stdin);  //aki ta a dúvida, não consegui fazer a sintaxe certa. 
   ok=strcmp(cnome,cadastro.nome); //cadastro.nome já está com algo escrito nela
   
   if(ok==0)
   {
	   for(i=1;i<4;i++)
	   {
	   printf("Digite a %d nota\n",i);
	   scanf("%d",&cadastro.nota[i]);
	   }

   }
   else
   {
	   printf("Nome nao cadastrado.\n");
	   incluir();
	   
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom so dando uma consertada

 

CODE

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

int main()

{

char nome[10],cnome[10];

 

printf("Digite seu nome\n");

fgets(nome,9,stdin);

printf("Digite outro nome\n");

fgets(cnome,9,stdin);

 

if(strcmp(nome,cnome))

puts("Diferentes");

else

puts("Iguais");

 

system("pause");

}

 

como nosso amigo ali em cima falo. use fgets pq você pode limita o tamanho da string a ser lida, assim evita estouro de buffer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, pq 0 é = falso e qualquer valor diferente de 0 é = verdadeiro.

 

poderia fazer assim tbm:

 

if(!strcmp(nome,cnome))

puts("Iguais");

else

puts("Diferentes");

 

observe o operador "!"

Compartilhar este post


Link para o post
Compartilhar em outros sites

como nosso amigo ali em cima falo. use fgets pq você pode limita o tamanho da string a ser lida, assim evita estouro de buffer.

que erros podem ocorrer caso estoure o buffer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.