J'ai un programme ici où j'essaye de décoder une chaîne de lettres en utilisant un chiffre de césar; essentiellement je déplace chaque caractère dans la chaîne "vers le bas" une lettre ("a" -> "b", "f" -> "g", "z" -> "a").Erreur de segmentation dans le code C en utilisant `string` à partir de cs.50.h
Le montant que je déplace une lettre dépend de la clé que je lui donne.
Dans ce programme spécifique, j'ai un message codé secret codé en dur dans la fonction main(), et une boucle for itérant à travers chaque touche possible. L'idée est que si ce message secret est simplement décalé vers le bas de x quantité de lettres, cracher 25 versions du chiffre révélera une réponse intelligible.
Malheureusement, j'utilise des concepts qui sont nouveaux pour moi - argc, argv, et plusieurs fonctions dans un seul programme. Je suis très nouveau à cela. Est-ce que quelqu'un peut aider à expliquer l'erreur de segmentation que j'obtiens? Je ne pense pas que je provoque des débordements sur les arguments.
#include <stdio.h>
#include <cs50.h>
#include <string.h>
string decode(int key, string message);
int main(void)
{
string secret_message = "ueuag rKJ AGIQ GIAR FEgN";
for (int i = 0; i < 25; i++)
{
decode(i, secret_message);
printf("%s", secret_message);
}
return 0;
}
string decode(int key, string message)
{
int i;
for (i = 0; i < strlen(message); i++)
{
if (message[i] >= 'a' && message[i] <= 'z')
{
message[i] = ((message[i] - 97 + key) % 26) + 97;
}
else if (message[i] >= 'A' && message[i] <= 'Z')
{
message[i] = ((message[i] - 65 + key) % 26) + 65;
}
}
return message;
}
Ce 'pour (i = 0; i
Ne connaissant pas sa définition, je suppose que passer 'string' directement à' printf' n'est pas bon. – MikeCAT
Quelle langue utilisez-vous, C ou C++? Qu'est-ce que 'string'? – aschepler