Como comparar 1000 nomes dentro de uma string c

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.

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

Primeiramente, boa noite a todos. 

O problema é o seguinte:

Eu tenho um vetor char chamado alfa, e o outro vetor, chamado mensagem.

O vetor alfa contém as 26 letras do alfabeto, e o vetor mensagem, contém algo digitado pelo usuário, com um máximo de até 1000 caractéres.

Eu preciso fazer com que, cada caractére da variável mensagem, seja comparada à cada caractére da variável alfa, e que, quando for verdadeiro (ou seja, quando forem iguais ambos os caractéres), a posição desse caractére (já que é um vetor) na variável alfa, seja jogado em outro vetor,  por exemplo, um vetor do tipo char, chamado novamensagem.

Por exemplo. Tendo uma mensagem "abcde", e meu alfa sendo "abcdefghijklmnopqrstuvwxyz".

Ao comparar mensagem[0] com alfa[0], ambos serão "a", então, como "a" ocupa a 1ª posição no vetor, 

a 1ª posição do vetor novamensagem[0], deverá ter o valor 1, em seguida, ele irá comparar, mensagem[0] com alfa[1],alfa[2], e assim por diante, mas como não serão mais iguais, não retornará mais nenhum valor.

E assim por diante, até alfa[4], que será a letra "e", que nesse caso, terá que retornar o valor 5, que é a posição da letra"e" no vetor alfa..

Agradeço desde já por qualquer ajuda.

Segue abaixo meu código. Só preciso implementar esta função.

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> int main (void) { /*declaração de variáveis do tipo char*/ char alfa[27]; char mensagem[1000]; int novamensagem[1000]; int cont = 0; int j = 0; /*atribuição de ponteiro do tipo file, para o arquivo crip.txt, no modo escrita "write"*/ FILE *file; file = fopen("C:/Users/Denis/Desktop/Crip.txt", "w"); printf("Digite sua mensagem:\n"); /*lê mensagem digitada por usuario, e atribui à variável mensagem*/ scanf("%[A-Z a-z0-9]", &mensagem); /*Conta o número de caractéres do vetor mensagem*/ while (mensagem[cont] != NULL) { cont++; } /*atribuição de ponteiro do tipo file, para o arquivo alfa.txt, no modo leitura "read"*/ FILE *abcd; abcd = fopen("C:/Users/Denis/Desktop/alfa.txt", "r"); /*lê conteúdo do arquivo alfa, até o caractere ser nulo, e joga na variável alfa*/ while (fgets(alfa, 27, abcd) != NULL) for (int abc = 0; abc < 27; abc++) { for (int i = 0; i <= cont; i++) { if (mensagem[i].Equals(alfa[abc])) { novamensagem[j] = abc; j++; } else { j = j; } } } fprintf(file, "%d", novamensagem); fclose(file); fclose(abcd); printf("Sua mensagem foi salva com sucesso."); getch(); return 0; }