¿Qué tipo de datos debo usar en C para almacenar datos como a1b2c3? ¿Podría usar una matriz de caracteres para almacenar esto como una cadena?

Depende de lo que realmente quiere decir con datos como ese, de dónde provienen y qué va a hacer con ellos. ¿Quiere decir que esta es una secuencia de caracteres que puede incluir tanto dígitos como letras? ¿O quiere decir que esta es la representación imprimible de un número hexadecimal?

Si se trata de cualquier carácter, tiene sentido almacenarlo como una cadena. Recuerde que en C una cadena es solo una matriz de caracteres. A menos que se especifique lo contrario, los caracteres se almacenan en bytes consecutivos de memoria y terminan en un carácter nulo. Este es un byte único con el valor numérico cero. Si alguna vez necesita escribirlo en su programa, escríbalo como ‘\ 0’.

Cuando escribe una cadena constante en su programa, la encierra entre comillas dobles. El compilador reserva suficiente espacio para contener todos los caracteres, más un byte más para el terminador. Entonces, podrías escribir esto:

char * a = “a1b2c3”;

Esto reserva siete bytes: seis para los caracteres y uno para el terminador.

Hay muchas funciones C estándar para leer, escribir y manipular cadenas, pero asegúrese de tener siempre suficiente espacio, ya que las funciones generalmente no comprueban si lo hace (de hecho, generalmente no hay forma de que verifiquen, ya que todo lo que se pasa como parámetro es la dirección del primer carácter de la cadena). Entonces, por ejemplo, si ya tiene la cadena declarada anteriormente, debe tener un código como este:

char b [10];

char c [6];

char * d;

strcpy (a, b); // Funciona genial

strcpy (a, c); // No es bueno. El byte después del último elemento de la matriz c será sobrescrito por el terminador.

strcpy (a, d); // No es bueno. La variable d no apunta a un lugar válido en la memoria.

Tenga en cuenta que la mayoría de las funciones esperan que la cadena ya esté terminada correctamente antes de pasarla como parámetro.

Muchas de las funciones estándar tienen una versión alternativa que le permite especificar la longitud máxima. Por ejemplo, vea la página de manual de strcpy () y también le informará sobre strncpy (). En general, estos son mejores para usar, pero tenga mucho cuidado de cómo manejan el terminador si la cadena es demasiado larga.


Por otro lado, tal vez quiere decir que este es un número hexadecimal, que solo puede contener los dígitos 0–9 y af (o AF; ambos están permitidos). En ese caso, puede escribir la constante como 0xa1b2c3: el 0x le dice al compilador que esta es una constante hexadecimal. Cada dígito hexadecimal se almacena como un valor binario de cuatro bits, por lo que en una máquina de 32 bits puede encajar fácilmente en un entero sin signo, como este:

unsigned int i = 0xa1b2c3;

Como tengo 32 bits, y todos se escriben, esto es lo mismo que:

unsigned int i = 0x00a1b2c3;

Espero que esto ayude.

Sí, puede usar una matriz de caracteres para almacenar ese tipo de datos mixtos y mientras procesamos los datos almacenados en dicha matriz de caracteres, debemos usar algunas funciones de manejo de cadenas y algunas manipulaciones ASCII ayudarían.

Sí. Todo es un personaje, incluso los números.

Con estos datos que mencionó, creo que puede usar una cadena o una matriz de caracteres para almacenar datos. Si eres principiante, creo que usas cadena porque tiene muchas funciones integradas y no necesitas preocuparte por la complejidad del espacio, entonces no necesitas eliminar la matriz de caracteres después de usarla.

Si ‘a1b2c3’ es una sola cadena, puede almacenarla como una cadena en la matriz de caracteres.

Suponiendo que no sea hexadecimal, lo almacenaría como una cadena terminada en nulo (teniendo en cuenta, por supuesto, que C no tiene un tipo de “cadena”.

More Interesting

En programación de computadoras, ¿por qué es importante la clasificación? ¿Cuándo se utilizan los algoritmos de clasificación en la codificación real?

¿Por qué SuperMemo no es tan fácil de usar como Anki?

¿Qué es el diagrama de flujo?

¿Qué algoritmos se pueden usar para encontrar rutas más seguras en una red de modo que sea casi imposible de rastrear y ningún pirata informático pueda utilizarlo completamente?

¿Qué son los árboles de búsqueda binarios?

¿Cuál es el algoritmo detrás de la creación de una nueva fuente que solo muestra publicaciones de tus seguidores?

Cómo obtener el índice de clasificación de matriz

¿Qué es la búsqueda de fuerza bruta?

¿Cómo se puede predecir el rango basado en el rango anterior y los datos de puntaje disponibles?

¿Qué debo hacer para mejorar el pensamiento algorítmico, especialmente para la programación dinámica?

Cómo aprender 'algoritmos' sobre los que el mundo tecnológico está hablando y aplicarlos a mi vida cotidiana

¿Hay alguna aplicación que use el montón de izquierda? ¿Cuál es el uso real de los montones en las estructuras de datos?

Estoy comenzando un proyecto de clasificación de picos, ¿dónde encuentro datos sin procesar y / o simulados?

¿Cuál es un ejemplo de un buen algoritmo que se puede usar para unir a diferentes usuarios dentro de un determinado radio en cualquier ubicación según sus preferencias?

En las preguntas que requieren el uso de estructuras de datos, ¿debemos usar STL o debemos definir la estructura de datos requerida manualmente? ¿Cual es mejor?