Notes d'étude du langage C : résumé des espaces réservés en langage C

Lorsque j'apprenais le langage C, j'ai suivi le cours "Programmation en langage C" dispensé par le professeur Weng Kai de l'Université du Zhejiang sur la plateforme MOOC de l'Université chinoise. Lorsque j'ai suivi l'apprentissage vidéo, j'ai constaté que le professeur mentionnait souvent des espaces réservés dans le cours. . Cependant, elle n’a pas été introduite de manière systématique et spécifique. Je l'ai donc spécialement collecté et résumé comme suit :


définition:

Définition : les espaces réservés sont des caractères spéciaux responsables du formatage de la sortie dans le développement du langage C.

Examinons un exemple de formatage couramment utilisé.

#include <stdio.h>
int main(){
    int amount = 0;
    int price = 0;
    
    printf("请输入金额(元):");
    scanf("%d",&price);

    printf("请输入票面(元):");
    scanf("%d",&amount);

    int change = amount - price;
    printf("找您%d元",change);


    return 0;
    
}

Dans ce programme qui gère les modifications, "%d" est un espace réservé, utilisé pour occuper une position lorsque la fonction printf est sortie et attendre l'entrée de la valeur spécifique de la variable.

Cependant, les espaces réservés ont des restrictions de format spécifiques. Par exemple, la raison pour laquelle "%d" est utilisé dans le code tout à l'heure est que les variables montant et prix sont toutes deux de type int.

Alors, à quels espaces réservés correspondent les différents types de variables ?


Résumé des espaces réservés en langage C :

Résumé des espaces réservés en langage C
Espace réservé Le format spécifique de l'espace réservé
%d,%i entier
%F nombre à virgule flottante
%p aiguille
%fL longue bûche
%e notation scientifique
%g Notation décimale ou scientifique
%a,%A Lire une valeur à virgule flottante (valable en C99 uniquement)
%c lire un personnage
%d Lire un entier décimal
%je Lire des entiers décimaux, octaux et hexadécimaux
%o Lire en entier octal
%x,%X Lire en entier hexadécimal
%s Lit une chaîne qui se termine par un espace, une tabulation ou un caractère de nouvelle ligne.
%f,%F,%e,%E,%g,%G Utilisé pour saisir des nombres réels, qui peuvent être saisis sous forme décimale ou exponentielle.
%u Lire dans un entier décimal non signé
%n La chaîne équivalente à la valeur lue jusqu'à présent
%[] Scanner le jeu de correspondance de mots
%% Lire le signe %

Mais après avoir résumé l'utilisation de tant d'espaces réservés, je n'ai pas vraiment compris la signification de certains d'entre eux. J'en ai marqué certains en rouge et je me suis préparé à explorer leur utilisation spécifique.


Utilisation spécifique de certains espaces réservés :


1. Analyse des différences entre "%c", "%s" et "%n" :

%c représente le format de caractère en langage C.

%s représente le caractère de format de chaîne en langage C.

Cela dit, je ne l'ai pas encore dit, mettons-le dans le code et regardons de plus près :

#include <stdio.h>

int main()
{
    char c = 'A'; 
    printf("用占位符输出一个字符:%c\n",c);

    char s[] = "字符串";
    printf("用占位符输出一个字符串:%s\n",s);

    return 0;
    
}

Jetez un œil au résultat :

 Je le comprends fondamentalement, et voici quelques différences entre les caractères et les chaînes à titre de référence.

1. Les caractères en langage C sont définis comme un type de données de base (char), représentant un seul caractère ; les chaînes ne sont pas des types de données de base, mais peuvent être remplacées par un tableau de caractères, terminé par '\0' à la fin.


2. Une chaîne doit être un tableau de caractères, mais un tableau de caractères n'est pas nécessairement une chaîne ; la différence entre un tableau de caractères et une chaîne est de savoir s'il y a un "\0" à la fin.


3.Char est un caractère unique occupant 1 octet d'espace de stockage dans un système 32 bits ; une chaîne est un espace continu de longueur fixe (en fait la définition d'un tableau).

Regardons le "%n" plus complexe :

1.%n est différent des autres symboles de description de format. %n ne transmet pas les informations de formatage à printf, mais demande à printf de mettre le nombre total de caractères qu'il a tapé jusqu'à ce point dans la variable entière pointée par l'argument correspondant. Par conséquent, l’argument pour %n doit être un pointeur entier.

2. Après le retour de l'appel printf, la variable pointée par l'argument %n contiendra une valeur entière, indiquant le nombre de caractères qui ont été générés par l'appel printf lorsque %n se produit.

Si vous ne comprenez pas, allez simplement dans le code :

#include <stdio.h>

int main()
{
    int count = 0;
    
    printf("this%n is a test\n",&count);
    printf("%d",count);

    return 0;
}

Le résultat de ce code est très intéressant, jetons un oeil :

 Sur la base des informations et du code, nous avons appris que : %n est un spécificateur de format spécial qui n'imprime pas certains contenus. printf() compte le nombre de caractères qui apparaissent avant %n et attribue cette valeur à la variable paramètre.


 

2. Utilisation de %[] :

%[] n'est généralement utilisé que dans la fonction scanf pour les caractères de contrôle de format. Donnons un exemple :

Si je souhaite lire uniquement les lettres minuscules dans une chaîne, comment puis-je résoudre ce problème à l’aide de la fonction scanf ?

Pensez à utiliser le caractère de contrôle de format %[] ici, qui prend en charge le contrôle de format comme az :

char s[];
scanf("%[a-z]",s);

De plus, il existe de nombreuses utilisations avancées de %[]. Vous pouvez vous référer au lien suivant :

L'application du caractère de contrôle du format scanf %[]     est bien écrite dans ce blog, je n'entrerai donc pas dans les détails ici.


Conclusion:

Deuxième blog, s'il vous plaît, soyez patient avec moi❥(^_-)

Les références:

Quel est le rôle de %s en langage C ? Que signifient %c et %s en langage C ?

Espaces réservés couramment utilisés en langage C

La différence entre les chaînes et les caractères en langage C

Application du caractère de contrôle du format scanf %[]

Je suppose que tu aimes

Origine blog.csdn.net/antonymbaobwang/article/details/132303102
conseillé
Classement