Pour un problème en classe CS50, je dois vérifier si une clé est valide, c'est-à-dire si l'entrée donnée par l'utilisateur est un nombre. J'ai essayé différents codes mais à chaque fois, s'il y a au moins un chiffre dans l'entrée, il retourne que la clé est correcte. Pourtant, elle ne devrait être correcte que si tous les caractères de la chaîne sont des chiffres...
#include <cs50.h>
#include <stdio.h>
#include <string.h>
# include <ctype.h>
int main(int argc, string argv[])
{
if (argc !=2)
{
printf("Usage: %s key\n", argv[0]);
return 1;
}
else
{
for (int i = 0; i <= (strlen(argv[1])); i++)
{
if (isalpha(argv[1][i]))
{
printf("Usage: ./caesar key \n");
return 1;
}
else
{
printf("%s\n", argv[1]);
return 0;
}
}
}
}
Lorsque l'entrée est supérieure à 2 chaînes de caractères, il devrait retourner 1 (cela fonctionne) ;
Lorsque la chaîne [1] n'est pas un nombre, elle devrait renvoyer 1 (cela fonctionne aussi) ;
lorsque la chaîne [1] est un nombre, il devrait imprimer les 2 chaînes (ne fonctionne pas) ;
Par exemple : Je m'attends à ce que ./caesar 222f renvoie : Utilisation : ./caesar key, mais la sortie réelle est 222f.