Como comparar um caracter com uma string

Olá Pessoal, estou com uma dúvida, gostaria de saber como comparar um caracter (digitado pelo usuario) se possui no meu vetor de string.

Pelo o que li a respeito a função strcmp compara apenas dois vetores ( de caracter ou inteiro)

Exemplo

//inteiro

vet.codigo == x

//string

vet.nome == letra // supondo que letra esteje declarada como vetor(letra[30]).

Meu código está assim:

struct dados {

int codigo;

char nome[30];

float n1,n2;

};

int main() {

dados vet[100];

int ultimo=0,i;

char achouletra;

printf("==================\n");

printf("informe primeira letra do nome:");

scanf("%c",&achouletra);

for(i=0;i<30;i++) // não sei se esse for esta correto

{

if(?) // como faço a comparação?

{

printf("codigo = %d\n",vet.codigo);

printf("nome = %s\n",vet.nome);

}

}

}

Olha aí eu preciso comparar um string que eu passo como parâmetro com vários tipos de caracteres, tipo: ‘!’, ‘#’, ‘@’… Como eu faço no Java??

Mas vc quer comparar como?
Se é igual a algum caracter?

[code]
String a = “aaa”;

if ( a.equals( String.valueOf( ‘#’ ) ) {

// a é igual a #

}[/code]

Ou você pode pegar cada caractere da String e comparar:

[code]String s = “Java”;

for(int i = 0; i < s.length(); i++) { if(s.charAt(i) == ‘a’) System.out.printnl(“s[” + i + “] = a” );

}[/code]

hehe Valeu DIEGO2005 ERA ISSO MESMO QUE EU PRECISAVA…QUASE CHEGUEI LÁ, MAS COM SUA DICA DEU CERTO…VALEU MESTRE

OLHA AÍ O CÓDIGO!!!

[code]public void verificaNome() {

String aux = nomediscip;

if(aux.length() > 15) { System.out.println("Nome da disciplina excede o limite de 15 caracteres"); } for(int i=0; i < aux.length(); i++) { if(aux.charAt(i) == '!') System.out.println("erro de caracter"); } }

[/code]
VALEU A ATENÇÃO AÍ DAVIDBUZATTO!!

Que tal aprender um pouco sobre expressoes regulares? Resolve seu problema de forma bem mais facil

Como comparar um caracter com uma string

Ola galera, estou aprendendo sobre strings e preciso fazer um algoritmo que receba um nome por exemplo e um caractere, e verifique quantos deste caractere existe no nome fornecido, porem ele me retorna um valor incorreto, se alguém puder me dar umas dicas, agradeço!

main(){ char nome[50], c[1]; int i, q; printf("Informe um nome: "); gets(nome); fflush(stdin); printf("\nInforme uma letra: "); gets(c); for(i=0;i<strlen(nome);i++){ if(nome[i]==c[1]){ q+=1; } } printf("A letra %c se repete: %i", c, q); }

Quando trabalhando com strings em C, lembre-se de que um array começa com o índice 0 e no caso c[1] não está pegando o caracter em si.
A posição [1] refere-se ao caracter \n no final da string.
Algumas modificações para que seu código realmente funcione são:

1 - Declaração de variáveis: char nome[50], c;
o tamanho de um char é 1, então não há necessidade de declarar como c[1]. Isso declara uma string que pode conter 2 caracteres

2 - printf("\nInforme uma letra: ");
c = getchar();
Utilize a função getchar para a leitura do caracter. Essa função é usada para lêr um caracter

3 - if(nome[i] == c){
Compare a posição i da variável nome com apenas a variável c conforme escrevi.

Algumas dicas importantes:
É muito recomendável inicializar variáveis antes de usá-las. Segue o exemplo abaixo:

int i = 0; int q = 0;

2 curtidas

Valeu cara, não sabia disso, quando fiz a comparação minha intenção de por c[1] era de informar o tamanho, n tinha me tocado que ele iria comparar o indice 1, e não sabia que apenas com uma letra não precisava declarar o tamanho e que pra receber precisava ser o getchar().

1 curtida

#include <stdio.h>

main(){

char nome[50], c;
int i, q=0;

printf(“Informe um nome: “); gets(nome); fflush(stdin); printf(”\nInforme uma letra: “);

scanf(”%c”,&c);

for(i=0;i<strlen(nome);i++){ if(nome[i]==c){ q+=1; } } printf(“A letra %c se repete: %i”, c, q);

}

Comparar o tamanho de strings é uma função comum na programação da linguagem C, pois ela permite verificar qual delas contém mais caracteres. Tal recurso é muito útil para ordenar dados. Comparar strings requer uma função especial; não use != ou ==.

  1. 1

    Na linguagem C, existem duas funções que permitem comparar strings. Ambas as funções fazem parte da biblioteca <string.h>.

    • strcmp() : Essa função compara duas strings e retorna a diferença no número de caracteres.
    • strncmp() : Semelhante à função strcmp(), exceto que esta compara os n primeiros caracteres das strings. Ela é considerada uma função mais segura, pois ajuda a evitar que ocorra overflow.

  2. 2

    Inicie o programa com as bibliotecas necessárias. Você vai precisar das bibliotecas <stdio.h> e <string.h>, juntamente com todas as outras bibliotecas necessárias para o programa.

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

  3. 3

    Inicie com a função .int. Esta é a forma mais fácil de aprender a função, já que ela retornará um valor inteiro que compara o tamanho das duas strings.

    #include <stdio.h> #include <string.h> int main () { }

  4. 4

    Defina as duas strings que você deseja comparar. Para este exemplo, iremos comparar duas strings char. Defina também o valor retornado como um inteiro.[1] X Fonte de pesquisa Ir à fonte

    #include <stdio.h> #include <string.h> int main () { char *str1 = "melancia"; char *str2 = "laranja"; int ret; }

  5. 5

    Inclua a função escolhida. Agora que você tem as duas strings definidas, adicione a função para compará-las. Neste exemplo, usaremos strncmp(), portanto devemos definir na função o número de caracteres que serão comparados.

    #include <stdio.h> #include <string.h> int main () { char *str1 = "melancia"; char *str2 = "laranja"; int ret; ret = strncmp(str1, str2, 6); /*Aqui, a função irá comparar os 6 primeiros caracteres */ }

  6. 6

    Use a estrutura .if...else para fazer a comparação. Depois de incluir a função no seu código, use a estrutura if...else para exibir qual das duas strings é maior. A função strncmp() retornará o valor 0 se as strings tiverem o mesmo comprimento, um número positivo se str1 for maior e um número negativo se str2 for maior.

    #include <stdio.h> #include <string.h> int main () { char *str1 = "melancia"; char *str2 = "laranja"; int ret; ret = strncmp(str1, str2, 6); if(ret > 0) { printf("str1 é maior"); } else if(ret < 0) { printf("str2 é maior"); } else { printf("As duas palavras são iguais"); } return(0); }

  • Lembre-se de que, se as strings forem iguais, o valor retornado será 0. Isso pode confundir, já que esse valor numérico também representa o valor lógico FALSE.