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
#include
#include
#include
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;
}
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 .
-
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 e , juntamente com todas as outras bibliotecas necessárias para o programa.
#include
#include
-
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
#include
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]
#include
#include
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
#include 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
#include
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.