Comparar string com um caracetere

3 respostas Resolvido
B

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);
}

3 Respostas

K
Solucao aceita

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;
B

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

B

#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);

}
Criado 14 de junho de 2016
Ultima resposta 6 de out. de 2019
Respostas 3
Participantes 3