60 votes

c array - avertissement : format pas un littéral de chaîne

J’essaie d’apprendre C et j’ai déjà rencontré un problème. Je suppose que c’est trivial mais j’ai besoin de le savoir. J’ai écrit :

Une fois que j’essaie de le compiler avec: gcc -g -o char_array2 char_array2.c je reçois une erreur disant:

Quelqu’un peut-il aider s’il vous plaît?

95voto

MByD Points 78505

Lors de l’utilisation de , il est préférable que la chaîne de `` format soit un littéral de chaîne et non une variable :

26voto

BlackBear Points 10069

Juste pour ajouter quelque chose à d’autres réponses, vous feriez mieux de le faire parce qu’il y a (longtemps?) les gens ont écrit printf comme ça et les pirates ont trouvé un moyen de lire et d’écrire dans la pile, plus ici.
Par exemple, un programme simple comme celui-ci:

Peut être utilisé pour changer la valeur de test_var de 0xffffff à autre chose, comme 0xaabbccdd:

7voto

Marlon Points 11528

L’avertissement est provoqué par le compilateur qui veut que le premier argument de `` soit un littéral de chaîne. Il veut que vous écriviez ceci:

En effet, le premier paramètre de est la chaîne de `` format. Les arguments de format sont ensuite transmis par la suite.

Remarque: Vous pouvez en fait utiliser une variable comme chaîne de format, mais vous ne devriez probablement pas le faire. C’est pourquoi le compilateur émet un avertissement et non une erreur.

3voto

Richard J. Ross III Points 33152

`` s’attend à ce que son format soit un littéral de chaîne, et non une chaîne créée dynamiquement. Pour résoudre ce problème, essayez ceci :

Ou utilisez ``

1voto

Ed Heal Points 24309

Veuillez lire l’avertissement 'pas d’arguments de format' - c’est-à-dire pas de % dans la chaîne.

Essayer ``

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X