Analyse des questions fréquemment posées sur le format d'entrée scanf en langage C
Dans le processus de programmation en langage C, la fonction de saisie est très importante pour le fonctionnement du programme. Nous utilisons souvent la fonction scanf pour recevoir les entrées de l'utilisateur. Cependant, en raison de la diversité et de la complexité des entrées, certains problèmes courants peuvent survenir lors de l'utilisation de la fonction scanf. Cet article analysera certains problèmes courants de format d'entrée scanf et fournira des exemples de code spécifiques.
#include <stdio.h> int main() { int num; printf("请输入一个整数:"); scanf("%d", &num); printf("您输入的整数是:%d ", num); return 0; }
Lorsque l'utilisateur saisit des caractères non numériques, le programme ne pourra pas lire correctement l'entrée de l'utilisateur, ce qui entraînera des résultats de sortie incorrects. Pour résoudre ce problème, nous pouvons utiliser des boucles et des instructions conditionnelles pour gérer les entrées incorrectes.
#include <stdio.h> int main() { int num; printf("请输入一个整数:"); while (scanf("%d", &num) != 1) { printf("输入错误,请重新输入:"); while (getchar() != ' '); } printf("您输入的整数是:%d ", num); return 0; }
Dans cet exemple, nous déterminons si le format d'entrée est correct en vérifiant la valeur renvoyée par la fonction scanf. En cas d'erreur, nous utilisons une boucle while pour effacer le tampon d'entrée des caractères illégaux et inviter à nouveau l'utilisateur à saisir.
#include <stdio.h> int main() { int num1, num2; printf("请输入两个整数,用空格分隔:"); scanf("%d%d", &num1, &num2); printf("您输入的两个整数是:%d和%d ", num1, num2); return 0; }
Pour résoudre ce problème, nous pouvons ajouter un espace à la chaîne de format pour ignorer les espaces de début et de fin et les nouvelles lignes.
#include <stdio.h> int main() { int num1, num2; printf("请输入两个整数,用空格分隔:"); scanf(" %d%d", &num1, &num2); printf("您输入的两个整数是:%d和%d ", num1, num2); return 0; }
Dans cet exemple, nous avons ajouté un espace devant "%d" afin que la fonction scanf ignore l'espace ou le caractère de nouvelle ligne précédent.
#include <stdio.h> int main() { int num; char ch; printf("请输入一个整数和一个字符:"); scanf("%d", &num); scanf("%c", &ch); printf("您输入的整数是:%d ", num); printf("您输入的字符是:%c ", ch); return 0; }
Lorsque nous exécutons ce programme et saisissons un entier et un caractère, nous constaterons que le programme se termine directement sans attendre que nous saisissions le caractère. En effet, après la saisie de l'entier, il reste encore un caractère de nouvelle ligne dans le tampon d'entrée qui n'a pas été extrait, ce qui oblige la deuxième fonction scanf à utiliser directement le caractère de nouvelle ligne d'une longueur de 1. Pour éviter cela, nous pouvons ajouter %c avec un espace pour ignorer les nouvelles lignes dans le tampon d'entrée.
#include <stdio.h> int main() { int num; char ch; printf("请输入一个整数和一个字符:"); scanf("%d", &num); scanf(" %c", &ch); printf("您输入的整数是:%d ", num); printf("您输入的字符是:%c ", ch); return 0; }
Dans cet exemple, nous ajoutons l'espace avant "%c" à la chaîne de format afin que la fonction scanf ignore les nouvelles lignes dans le tampon d'entrée.
Grâce à l'analyse et aux exemples de code ci-dessus, nous pouvons mieux comprendre les problèmes courants du format d'entrée scanf en langage C et apprendre à gérer ces problèmes de manière raisonnable pour améliorer la robustesse et l'expérience utilisateur du programme. Dans la programmation réelle, nous devons également ajuster le code de manière appropriée en fonction des besoins spécifiques et des scénarios de saisie pour garantir que les entrées de l'utilisateur sont lues correctement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!