Notas de estudio del lenguaje C: resumen de marcadores de posición en lenguaje C

Cuando estaba aprendiendo el lenguaje C, seguí el curso "Programación en lenguaje C" impartido por el profesor Weng Kai de la Universidad de Zhejiang en la plataforma MOOC de la Universidad China. Cuando seguí el aprendizaje en video, descubrí que el profesor a menudo mencionaba marcadores de posición en el curso. . Sin embargo, no se ha introducido de forma sistemática y específica. Así que lo recopilé y resumí especialmente de la siguiente manera:


definición:

Definición: Los marcadores de posición son caracteres especiales responsables de formatear la salida en el desarrollo del lenguaje C.

Veamos un ejemplo de formato de uso común.

#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;
    
}

En este programa que maneja cambios, "%d" es un marcador de posición, que se utiliza para ocupar una posición cuando se genera la función printf y esperar la entrada del valor específico de la variable.

Sin embargo, los marcadores de posición tienen restricciones de formato específicas. Por ejemplo, la razón por la que se usa "%d" en el código hace un momento es porque las variables cantidad y precio son ambas de tipo int.

Entonces, ¿a qué marcadores de posición corresponden los diferentes tipos de variables?


Resumen de marcadores de posición en lenguaje C:

Resumen de marcadores de posición en lenguaje C
Marcador de posición El formato específico del marcador de posición.
%d,%i entero
%F número de coma flotante
%pag puntero
%Florida tronco largo
%mi notación cientifica
%gramo Notación decimal o científica
%Automóvil club británico Leer en un valor de punto flotante (válido solo en C99)
%C leer un personaje
%d Leer entero decimal
%i Leer números enteros decimales, octales y hexadecimales
%o Leer en entero octal
%x,%X Leer en entero hexadecimal
%s Lee una cadena que termina con un espacio, tabulación o carácter de nueva línea.
%f,%F,%e,%E,%g,%G Se utiliza para ingresar números reales, que se pueden ingresar en forma decimal o exponencial.
%u Leer en un entero decimal sin signo
%norte La cadena equivalente del valor que se ha leído hasta el momento.
%[] Escanear conjunto de concordancia de palabras
%% Leer % signo

Pero después de resumir el uso de tantos marcadores de posición, no pude entender bien el significado de algunos de ellos. Marqué algunos en rojo y me preparé para explorar el uso específico.


Uso específico de algunos marcadores de posición:


1. Análisis de las diferencias entre "%c", "%s" y "%n":

%c representa el carácter de formato de carácter en lenguaje C.

%s representa el carácter de formato de cadena en lenguaje C.

Dicho esto, todavía no lo he dicho, pongámoslo en el código y echemos un vistazo más de cerca:

#include <stdio.h>

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

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

    return 0;
    
}

Eche un vistazo al resultado:

 Básicamente lo entiendo, y aquí hay algunas diferencias entre caracteres y cadenas como referencia.

1. Los caracteres en lenguaje C se definen como un tipo de datos básico (char), que representa un solo carácter; las cadenas no son tipos de datos básicos, pero pueden reemplazarse por una matriz de caracteres, terminada con '\0' al final.


2. Una cadena debe ser una matriz de caracteres, pero una matriz de caracteres no es necesariamente una cadena; la diferencia entre una matriz de caracteres y una cadena es si hay un '\0' al final.


3.Char es un solo carácter que ocupa 1 byte de espacio de almacenamiento en un sistema de 32 bits; una cadena es un espacio continuo de longitud fija (en realidad, la definición de una matriz).

Veamos el "%n" más complejo:

1.%n es diferente de otros símbolos de descripción de formato. %n no pasa información de formato a printf, pero le indica a printf que coloque el número total de caracteres que ha escrito hasta ese momento en la variable entera señalada por el argumento correspondiente. Por lo tanto, el argumento de %n debe ser un puntero entero.

2. Después de que regrese la llamada printf, la variable a la que apunta el argumento %n contendrá un valor entero, que indica la cantidad de caracteres que ha generado la llamada printf cuando ocurre %n.

Si no lo entiende, simplemente vaya al código:

#include <stdio.h>

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

    return 0;
}

El resultado de este código es muy interesante, echemos un vistazo:

 Según la información y el código, aprendimos: %n es un especificador de formato especial que no imprime cierto contenido. printf() cuenta el número de caracteres que aparecen antes de %n y asigna este valor a la variable de parámetro.


 

2. Uso de %[]:

%[] generalmente solo se usa en la función scanf para caracteres de control de formato. Pongamos un ejemplo:

Si quiero leer solo letras minúsculas en una cadena, ¿cómo puedo resolver este problema usando la función scanf?

Considere usar el carácter de control de formato %[] aquí, que admite control de formato como az:

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

Además, existen muchos usos avanzados de %[], puede consultar el siguiente enlace:

La aplicación del carácter de control del formato scanf %[]     está bien escrita en este blog, por lo que no entraré en detalles aquí.


Conclusión:

Segundo blog, por favor tengan paciencia conmigo❥(^_-)

Referencias:

¿Cuál es el papel de %s en lenguaje C? ¿Qué significan %cy %s en lenguaje C?

Marcadores de posición de uso común en lenguaje C

La diferencia entre cadenas y caracteres en lenguaje C.

Aplicación del carácter de control del formato scanf %[]

Supongo que te gusta

Origin blog.csdn.net/antonymbaobwang/article/details/132303102
Recomendado
Clasificación