Comprensión preliminar del lenguaje C: cadenas, caracteres de escape.

Tabla de contenido

Asignación de cadenas

   La primera tarea general:

   El segundo tipo de asignación de un solo elemento:

   El tercer método de puntero:

  La salida es de la forma:

 Personajes de escape comunes:

Cómo usarlos:

?

\`

\"

\\

\a

\ddd

\xdd

Nota: Los usos anteriores son caracteres de escape de uso común, no todos enumerados.


 

Asignación de cadenas


  Hay dos asignaciones iniciales para cadenas:


   La primera tarea general:

char  a[]={"good morning"};//因为保存的是字符型的变量所以数组用char来定义;
char  b[]="good morning";//可以不加{}
    


    
Este formulario agregará '\0' al final del último carácter, que termina en '\0';

Si la longitud del carácter definido es menor que el subíndice de la matriz, otros elementos serán '\0' automáticamente;

Un espacio también cuenta como carácter;

Si utiliza este método para definir una cadena, el número de caracteres definidos es menor que el subíndice de la matriz, porque '\0' se agregará automáticamente al final; (por supuesto, '\0' también ocupará la posición de un carácter;' \0' es el carácter de escape nulo (vacío))

       El compilador agrega automáticamente '\0' al final para dejar claro que la cadena termina allí. '\0' marca el final de la cadena. (Específicamente por qué la siguiente explicación de matriz multidimensional)

           Nota: El espacio y '\0' no son lo mismo. Un espacio es un carácter; el código ASCII es 32 y '\0' es un carácter de escape; el código ASCII es 0

   El segundo tipo de asignación de un solo elemento:

char a[]={'g','o','o','d'};//这种形式必须带花括号{};

char a[]={'g','o','o','d'};//Este formulario debe tener llaves {}; no hay '\0' al final de este formulario, lo cual es equivalente
a asignar un valor a cada elemento de la matriz.

El número de caracteres que se pueden definir es igual al valor del subíndice de la matriz; (esta forma debería llamarse matriz de caracteres con mayor precisión)

   El tercer método de puntero:

char *p="hello";//定义一个指针指向一个字符串;
printf("%s",p);//输出字符串;
printf("%c",*(p+i));//单个字符输出;


El puntero p apunta a la primera dirección de la cadena. Si necesita llamar, puede tomar los elementos en forma de *(p+i), o generar directamente la cadena con p;

     

  La salida es de la forma:

     1. En la Figura 1, la existencia de \0 al final de la cadena después del signo igual de la variable arr1 (omitida en el programa) se aplica a 6+1 espacios en la memoria, pero \0 no se cuenta como cadena. contenido.

   2. En la variable arr2 , dado que el signo igual no es una cadena de caracteres, se debe agregar el carácter '\0' después de 'f'; de lo contrario, no habrá marca de fin ni caracteres confusos.

 Una vez corregida esta cifra en la Figura 1 , los caracteres confusos no existirán.

 Si se utiliza el operador strlen para calcular la longitud de su cadena, \0 no se cuenta

Nota: Cuando use strlen, debe agregar #include<string.h> antes del programa

 Personajes de escape comunes:

Personaje de escape paráfrasis
? Se utiliza al escribir varios signos de interrogación seguidos, lo que evita que se analicen en palabras de tres letras.
\` Comúnmente utilizado para representar constantes de caracteres.
\" Se utiliza para representar una comilla doble dentro de un carácter.
\\ Se utiliza para indicar una barra invertida, evitando que se interprete como una secuencia de escape.
\a carácter de advertencia, pitido
\b retroceso
\F Carácter de alimentación
\norte nueva línea
\r retorno de carro
\ t pestaña horizontal
\v pestaña vertical
\ddd ddd representa 1 ~ 3 números octales. Por ejemplo: \130X
\xdd dd significa 2 dígitos hexadecimales. Por ejemplo: \x30 0

Cómo usarlos:

  • ?

En algunos compiladores, "??)" se analizará en una palabra de tres letras "]",
por lo que al imprimir "??)", para evitar que se analice en una palabra de tres letras, agregue "\" delante de él, cámbielo a "\??)".

  • \`

Imprimir comillas simples como esta hará que el compilador no pueda compilar :

printf("%c",''');

Agregue \ delante de ' para escaparlo e imprimirlo,

printf( "%c",' \' ');

  • \"

El uso es el mismo que \`, así que no lo repetiré aquí.

  • \\

Se utiliza para representar una barra invertida, evitando que se interprete como un carácter de escape .

Cuando desee imprimir la ruta de un archivo, si escribe directamente así:

printf("c:\test\test.c");

Entonces el resultado impreso será así:

 Esto se debe a que el compilador interpretará \t como una pestaña horizontal ,

La forma correcta de escribir es agregar \ delante de \ para escapar para evitar que se analice como \t .

printf("c:\\test\\test.c");

  • \a

Activa un timbre en la computadora cuando se imprime \a.

printf("\a");
  • \ddd

ddd representa de 1 a 3 números octales. Convierta los tres números de ddd a decimal y el resultado será el ASCAII correspondiente al número decimal.

¿Adivina qué imprime el siguiente código?

printf("%c",'\130');

Debido a que el resultado de salida es un tipo de carácter, convierta el número octal 130 a 88 en decimal y luego genere el carácter X correspondiente a la tabla de códigos ASCII .

Si el tipo de salida es entero, el resultado impreso es el resultado de convertir el octal 130 a decimal

como esto:

printf("%d",'\130');

El resultado final es 88, que corresponde exactamente a la X en la tabla ASCII.

Nota: Si se excede el rango del código ascall, el compilador informará un error . Además, si tiene más de tres dígitos, o cuando se encuentra un número no octal, la conversión finaliza y se toma directamente el último número.

  • \xdd

Además, lo primero que hay que entender es que dd representa 2 números hexadecimales,

¿Adivina qué imprime el siguiente código?

printf("%c",'\x30');

¿Por qué es 0?

Debido a que el resultado de salida es de tipo carácter, convierta el número hexadecimal 30 al decimal 48 y luego genere el carácter correspondiente 0 en la tabla ASCII.

De manera similar, si el tipo de salida es un número entero, el resultado impreso es el resultado de convertir hexadecimal 30 a decimal .

printf("%d",'\x30');

El resultado final es 48 correspondiente a 0 en la tabla ASCII

Nota: Los usos anteriores son caracteres de escape de uso común, no todos enumerados.

Se actualizará más tarde....

Supongo que te gusta

Origin blog.csdn.net/fcccfffg/article/details/131987646
Recomendado
Clasificación