Como comparar uma struct com um char usando strcmp

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

}

}

}

Olá,

Você esta fazendo o código em C Correto?

Se for esse o caso, para compara duas strings é o strcmp, esse é o caminho correto. Existe ainda strncmp e memcmp.

Mas é basicamente isso mesmo, vc não compara strings da mesma forma que compara numeros em C.

char fruta1[] = "banana"; char fruta2[] = "banana"; // Forma errada de comparar if (fruta1 == fruta2) { printf("São iguais/n"); } else { printf("Não são iguais/n"); } //forma correta de compara if (strcmp (fruta1,fruta2) == 0) { printf("São iguais/n"); } else { printf("Não são iguais/n"); } //forma mais correta ainda de compara if (strncmp (fruta1,fruta2, strlen(fruta1)) == 0) { printf("São iguais/n"); } else { printf("Não são iguais/n"); }

I am almost brand new to C and was wondering how to compare strings from two separate struct member-variables. Maybe providing my code will bring clarity to what I am asking.

I have the following structure:

typedef struct mentry { char *surname; int house_number; char *postcode; char *full_address; } MEntry;

I want to compare two seperate MEntry variables. I want to check if the surname of both entries is the same. So, I've written the following method:

int me_compare(MEntry *me1, MEntry *me2) { int surnameResult; char me1Surname = *(me1->surname); char me2Surname = *(me2->surname); surnameResult = strcmp(me1Surname, me2Surname); return surnameResult; }

When I compile my program I get the following messages:

mentry.c:30:6: warning: passing argument 1 of ‘strcmp’ makes pointer from integer without a cast [enabled by default] surnameResult = strcmp(me1Surname, me2Surname);

Am I wrong in thinking that the line:

char me1Surname = *(me1->surname);

sets me1Surname equal to the value of surname and not the address of surname?

I also get another warning saying:

"In file included from mentry.c:2:0: /usr/include/string.h:140:12:note: expected ‘const char *’ but argument is of type ‘char’ extern int strcmp (const char *__s1, const char *__s2)"

Can someone explain why this warning appears?

Estou tentando fazer uma busca num vetor de struct para retorna uma lista apartir da variavel sexo, mas na hora de comparação de string não é retornado a lista.

código completo: PASTEBIN

void consultar_registro() { struct pessoas p[5]; int op2,i; char s[30]; printf("\nEscolha como deseja buscar no registro: "); printf("\n1-Sexo\n2-Idade\n"); scanf("%d",&op2); switch(op2) { case 1: //ERRO printf("\nDigite o sexo que deseja buscar: "); scanf("%s",&s); for(i=0;i<5;i++) { if(strcmp(s,p[i].sexo)==0) { printf("\nNome: %s",p[i].nome); printf("\nSexo: %s",p[i].sexo); printf("\nIdade: %s",p[i].idade); } else { printf("\nNao foi encontrado\n"); } } //ERRO break; case 2: printf(""); break; default: printf("\nOpcao invalida"); break; }