Aprendizaje del lenguaje C: 12. Matrices y cadenas de caracteres

1. tipo de personaje

Una variable de tipo char ocupa un byte de memoria, con un valor que oscila entre -128 y 127;

El tipo char puede entenderse como un tipo entero de un solo byte;

Las variables de tipo char se pueden asignar e inicializar así

char a = 97;

char b = 'a';

2. Matriz de caracteres

Las matrices de caracteres son esencialmente colecciones de números enteros de un solo byte, por lo que las matrices de caracteres se pueden asignar e inicializar de esta manera.

char a[] = {97, 98, 99};

char b[] = {'h', 'e', 'l', 'l', 'o'};

Ejemplo de programa 1:

#include <stdio.h>

int main()
{
	char a[] = {97, 98, 99};
	int i = 0;
	
	for(i=0; i<sizeof(a);i++)
	{
		printf("%d\n", a[i]); //按照整型输出
	}
	
	for(i=0; i<sizeof(a);i++)
	{
		printf("%c\n", a[i]); //按照字符型输出
	}
}

3. Hechos de cadenas

Una cadena común utiliza comillas dobles para encerrar algunos caracteres;

Sin embargo, no existe ningún tipo de datos como una cadena en el lenguaje C. Las cadenas solo se pueden simular mediante matrices de caracteres.

Las cadenas que vemos a menudo son simplemente literales y solo pueden usarse como constantes.

#define KJ    "helloworld"
printf("%s\n", KJ);
printf("%s\n", "helloworld");

En mi impresión, la variable de cadena parece existir, el siguiente programa puede "probarlo".

Ejemplo de programa 2:

#include <stdio.h>

int main()
{
	char arr[] = {'h','e','l','l','o','\0'};

	char arr1[] = "hello";

	printf("%s\n", arr);

	printf("sizeof(arr1) = %d\n", sizeof(arr1)); //数组arr1的大小应该为6,有一个隐形的\0
	printf("%s\n", arr1);
	return 0;
}

De hecho, la llamada variable de cadena es esencialmente una matriz de caracteres. El elemento 0 en la matriz de caracteres representa el final de una cadena. Los elementos de la matriz de caracteres no son necesariamente los elementos de la cadena. Como se muestra en el ejemplo de programa 2, hay un total de 6 elementos en la matriz arr, pero la cadena representada solo tiene 5 caracteres, que debería ser \0. Es un elemento en la matriz, pero cuando representa una cadena, significa el fin símbolo.

Por lo tanto, se puede entender que si la matriz de caracteres no tiene elementos \0, es solo una matriz de caracteres. Si hay elementos \0 en la matriz de caracteres, entonces esta matriz de caracteres también puede representar una cadena.

4. Operaciones con cadenas

El lenguaje C no tiene operaciones directas en cadenas. No hay un enfoque directo en esto. Es decir, hay operaciones indirectas. Es necesario agregar otro paquete de herramientas. Hemos estado usando el paquete de herramientas stdio.h antes, y Esta vez volveré a tocarlo: un conjunto de herramientas string.h sirve para operaciones de cadenas.

Las herramientas de cuerda más utilizadas son las siguientes:

strlen(s);//获取字符串s的长度

strcpy(s1, s2);//将s2中的字符复制到s1

strcat(s1, s2);//将s2追加到s1后面

strcmp(s1, s2);//比较s1和s2是否相等,相等时返回结果0

Ejemplo de programa 3: obtener la longitud de una cadena

#include <stdio.h>
#include <string.h>

int main()
{
	char arr[10] = "hello";

	int size = sizeof(arr); //获取arr数组的大小,数组大小已经定义好了,就是10

	int len = strlen(arr); //获取arr字符串的长度,字符串的长度是5,只有5个字符


	printf("size = %d\n", size);

	printf("len = %d\n", len);

	return 0;
}

Resultado de salida:

size = 10
len = 5

Ejemplo de programa 4: Copia de cadena

#include <stdio.h>
#include <string.h>

int main()
{
	char s1[10] = "hello";

	char s2[] = "world!";

	int len = strlen(s1); //获取arr字符串的长度

	printf("s1 = %s\n", s1);
	printf("len = %d\n", len);

	strcpy(s1, s2);
	len = strlen(s1);
	printf("s1 = %s\n", s1);
	printf("len = %d\n", len);

	return 0;
}

Resultado de salida:

s1 = hello
len = 5
s1 = world!
len = 6

Ejemplo de programa 5: concatenación de cadenas

#include <stdio.h>
#include <string.h>

int main()
{
	char s1[20] = "hello"; //这个数组空间要搞大一些,不然拼接的字符串放不下

	char s2[] = "world!";

	int len = strlen(s1); //获取arr字符串的长度

	printf("s1 = %s\n", s1);
	printf("len = %d\n", len);

	strcat(s1, s2);
	len = strlen(s1);
	printf("s1 = %s\n", s1);
	printf("len = %d\n", len);

	return 0;
}

Resultado de salida:

s1 = hello
len = 5
s1 = helloworld!
len = 11

Ejemplo de programa 6: Comparación de cadenas

int main()
{
	char s1[20] = "hello";

	char s2[] = "world!";

	int len = strlen(s1); //获取arr字符串的长度

	printf("s1 = %s\n", s1);
	printf("len = %d\n", len);

	if (strcmp(s1, s2) == 0)
	{
		printf("两个字符串相等\n");
	}
	else
	{
		printf("两个字符串不相等\n");
	}

	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/m0_49968063/article/details/132938956
Recomendado
Clasificación