Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com string


Alan Vasconcelos

Pergunta

Pessoal é o seguinte estou tentando fazer um algoritmo para saber se uma string é palindromo ou não.

meu código abaixo:

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

int main()
{
char nome1[50], nome2[50];
int i, tam1, cont=0;

printf("Digite a frase: ");
gets(nome1);
tam1 = strlen(nome1);
for(i=tam1-1;i>=0;i--){
if(nome1==' ')
continue;
else{
nome2[cont]=nome1;
cont++;
}
}
nome2[cont]='\0';
printf("%s\n",nome2);
if(strcmp(nome1,nome2)==0)
printf("palindromo.\n");
else
printf("não palindromo.\n");
system("pause");
return 0;
}

na linha if(nome1==' ') está dando o seguinte erro:

- warning: comparison between pointer and integer

mais se eu troco as aspas ' ', por aspas duplas " ", esse erro desaparece. Aguem poderia me explicar o porque?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Aspas simples é utilizada para referenciar APENAS um carácter (exceto os especiais, como por exemplo, terminador de string - '\0'), pois indica uma conversão direta para um valor inteiro. Pode conferir a referência neste link.

Aspas duplas referencia uma bloco de memórias e retorna a referência para a variável, e já contém o terminador de string.

O vetor de char, utilizado no seu caso, é um ponteiro estático que referencia para uma área de memória. O valor desse ponteiro não pode ser alterado, mas o conteúdo da string sim - desde que não ultrapasse o tamanho pré-definido.

Portanto, quando faz a comparação de um vetor com um conteúdo usando aspas simples, estará fazendo, internamente, uma comparação entre ponteiro e inteiro.

Quando faz a comparação de um vetor com um conteúdo entre aspas duplas, estará fazendo comparação entre valores de referências (não é o conteúdo, em sí) de memória.

Para saber se o conteúdo do vetor é um espaço, utilize assim:

if ( strcmp( nome1, " " ) == 0 )

Ou então, valide direto pelo valor de retorno:

if ( ! strcmp(nome1, " " ) ) // Retorno é zero quando conteúdos comparados forem iguais. Usando a exclamação, esse valor é invertido, transformando-se em um ("TRUE"), tornando o "if" válido.
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...