permet de dire qu'ils entrent C'est l'erreur que je reçois. P > p> r = (i == 16) code>, comment puis-je prendre cela puis exécuter cela pour la sortie? g: \ code \ didacticiel 3 \ main.c | 104 | Erreur: affectation à l'expression avec type de tableau code> p>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main()
{
int answer;
char operation[20];
int i = 16;
int j = 32;
int k = 8;
bool r;
printf("Input an operation:\n");
fgets(operation, sizeof(operation), stdin);
operation = answer;
if (answer == 1)
printf("The operation you entered was true.");
else
printf("The operation you entered was false.");
}
4 Réponses :
Réponse courte: vous ne pouvez pas. C est une langue compilée et contrairement aux langues interprétées, il ne peut pas évaluer les chaînes définies de manière dynamique en tant que commandes.
Ce que vous pouvez faire est de créer un sous-ensemble d'opérations autorisées et de les évaluer manuellement. Quelque chose comme ça: p>
Ah Ok, merci de toute façon je vais le changer.
Si je vous comprends correctement, vous souhaitez autoriser l'utilisateur à entrer une chaîne contenant une pièce de code C. Dans votre exemple, la chaîne d'entrée est Ensuite, vous souhaitez exécuter tout élément de code C entré par l'utilisateur. Si le code C entré contient des variables ( Parce que c est une langue compilée, cela est extrêmement difficile (je dirais presque impossible) à atteindre. Vous devriez écrire un compilateur pour compiler le code C entré au code de la machine. Et même alors, il serait extrêmement difficile de donner à l'accès au code de la machine généré au contexte (par exemple les variables) dans votre programme d'exécution. P>
Aucune infraction prévue, mais ce type d'exercice va bien au-delà du niveau que vous êtes. Si cela vient d'une mission, ce n'est pas ce que votre professeur veut que vous fassiez. P>
PS 1: Si l'entrée n'est pas une pièce arbitraire de code C, mais juste une expression avec un ensemble limité d'opérateurs, la tâche devient plus simple. p>
PS 2: Dans des langages plus dynamiques telles que Python, cela est beaucoup plus facile à atteindre (regarder, par exemple, à la déclaration Python r = (i == 16) code>. P>
r code> et i code> dans votre exemple), vous souhaitez utiliser les valeurs des variables réelles de votre programme. P>
Eval code>). Si vous avez une flexibilité dans le choix de votre langage de programmation, en utilisant quelque chose comme Python pourrait être une meilleure approche. P>
Comme les autres utilisateurs ont dit, vous pouvez programmer une opération précédemment acceptée. Et puis, si vous souhaitez exécuter des commandes spéciales, vous pouvez utiliser la famille code> Famille à l'intérieur des enfants créés avec Fourche code>. p>
avec cette expression Bien que cette expression soit complètement invalide à elle seule, notez que vous devez toujours initialiser les variables avant de les utiliser de quelque manière que ce soit. Sinon, ils n'ont qu'une valeur "Garbarge" aléatoire, que vous utilisez plus tard dans le programme et que vous pouvez causer beaucoup plus d'erreurs. P> C'est ce qui provoque le message d'erreur que vous dirigez. P> À côté de cela, votre programme a beaucoup plus de problèmes à préoccupation. P> Qu'est-ce que vous voulez faire en réalité avec ce programme? P> Quel est le but de Et pourquoi voulez-vous attribuer une certaine valeur de En outre, p> est également fou, car opération = réponse; code> Vous essayez d'attribuer une valeur (non initialisée) int code> sur un pointeur sur un tableau code> tableau code>. réponse code>? Pourquoi réponse code> ne reçoit pas une valeur attributée à? P> réponse code> sur le tableau? p> réponse code> ne reçoit pas une valeur avant, alors vous ne pouvez pas faire de condition avec elle. p> p>
Opération = Réponse; Code> Qu'attendez-vous que cela fallait?J'espérais que cela dirigerait l'opération qu'ils ont saisie et définiraient ensuite la sortie comme "réponse"
Même si cela fonctionnait (bien sûr que cela ne signifie pas), vous devez au moins échanger les opérandes. Vous attribuez une réponse à une opération, qui ne fait pas de sens logique.
Mais vous venez de saisir une chaîne à
opération code>, tellement essayant de l'écraser avec n'importe quoi i> n'a aucun sens.@Lewisroberts logiquement, ne devrait-il pas être
réponse = opération; code> (en pseudo code). Pas que cela fonctionnera dans le code C réel.Ah oui, point équitable, même ainsi, comment puis-je ensuite prendre l'opération et l'utiliser? Comment puis-je le prendre afin que ce ne soit plus une chaîne, mais le code?
Qu'entendez-vous par
opération code>?@Lewisroberts
= code> ne "exécuter" pas ". Il attribue juste une chose à une autre. La gauche est une chaîne (en fait d'un tableau de caractères) et de droite est une variable int. Il essaie donc d'attribuer la valeur d'une variable INT à un tableau de caractères. C'est tout ce qu'il fait. Pas de magie.