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