Je suis nouveau sur C et je ne comprends toujours pas comment utiliser des chaînes de caractères via des tableaux de caractères.
Dans mon programme C, j'accepte les commandes de l'utilisateur:
char command[20];
scanf("%s",command);
Bien sûr, je veux ensuite savoir quelle commande ils ont tapée (quelque chose de similaire à "if (command ==" hello "), alors faites quelque chose"). Je sais que ce n'est pas possible en C, car je compare un littéral de chaîne à un tableau de caractères, mais quel serait le bon moyen d'y parvenir? J'ai essayé d'utiliser strcmp (commande, "hello") et j'ai toujours des erreurs.
Tout conseil que vous pourriez donner serait très apprécié. Je vous remercie!
strcmp renvoie 0 lorsque les chaînes sont identiques. J'ai un code qui utilise strcmp comparant des tableaux de caractères à des chaînes de caractères, et j'étais assez confus quand cela ne fonctionnait pas. Il s’est avéré que j’avais tort de supposer qu’il renverrait 1 lorsque la chaîne est identique!
Peut-être que vous avez fait la même erreur?
J'ai écrit une version complète de ce que je pense que vous essayez de faire:
#include <string.h>
void main()
{
char command[20];
scanf("%s",command);
// command and "hello" can be less than, equal or greater than!
// thus, strcmp return 3 possible values
if (strcmp(command, "hello") == 0)
{
printf("\nThe user said hello!");
}
}
Plusieurs personnes ont commenté l'utilisation de scanf
et elles sont correctes, sauf qu'un nouveau programmeur doit commencer quelque part à apprendre ce genre de choses, alors ne vous en faites pas, nous apprenons tous ...
J'espère que cela t'aides.
Je pense que c'est un point de départ idéal pour vous:
http://www.wikihow.com/Compare-Two-Strings-in-C-Programming
C'est probablement écrit au bon niveau pour vous. Bonne chance et bienvenue chez stackoverflow!
Quand on parle de chaîne en C, elle prend normalement deux formes: 1. un tableau de caractères, 2. un pointeur de caractère. La plupart du temps, ils sont interchangeables. Par exemple:
char *cmd_ptr = "command1";
char cmd_array[20] = "command2";
printf ("cmd1: %s cmd2: %s\n", cmd_ptr, cmd_array);
La différence principale entre la définition ci-dessus est que pour cmd_ptr
vous ne pouvez pas changer son contenu, comme cmd_ptr[0] = 'a';
pour cmd_array
vous pouvez changer n'importe quel élément du tableau.
Mais vous pouvez faire cmd_ptr = cmd_array;
, puis vous pouvez apporter des modifications via cmd_ptr
car il pointe au même emplacement que cmd_array
.