Diferencia entre revisiones de «string»

De ArduWiki
Saltar a: navegación, buscar
(Advertencia)
(Ejemplo 2)
Línea 51: Línea 51:
  
 
== Ejemplo 2 ==
 
== Ejemplo 2 ==
En el código siguiente, el asterisco después del tipo de datos char "char *" indica que se trata de una matriz de [[punteros]]. Todos los nombres de matrices son en realidad punteros, así que esto es necesario para hacer una matriz de matrices. Los punteros son una de las partes más esotéricas de C ++ para que los principiantes puedan entender, pero no es necesario entender los punteros en detalle para usarlos de la manera aquí descrita.
+
En el código siguiente, el asterisco después del tipo de datos '''char*''' indica que se trata de una matriz de [[punteros]]. Todos los nombres de matrices son en realidad punteros, así que esto es necesario para hacer una matriz de matrices. Los punteros son una de las partes más esotéricas de C ++ para que los principiantes puedan entender, pero no es necesario entender los punteros en detalle para usarlos de la manera aquí descrita.
  
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
Línea 72: Línea 72:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
 
== Ejemplo 3 ==
 
== Ejemplo 3 ==

Revisión del 21:02 2 abr 2019

Descripción

En realidad string o cadena de caracteres no es un tipo de dato y se construye como una matriz de tipo char con terminación nula.

Las cadenas deben terminar con un carácter nulo (ASCII código 0). Esto permite que funciones como Serial.print() sepan donde terminan las cadenas. De lo contrario, seguirían leyendo los siguientes bits de memoria que ya no pertenece a esa cadena. Esto significa que la cadena tiene que tener espacio para un carácter más que el texto que desea que contenga.

Sintaxis

char variable[] = {valor1, valor2...};
char variable[] = "valor";
char* variable = "valor";

Parametros

variable
es el nombre de la matriz.
valor1
debe ir entre comillas simples. Cada uno.
valor
es una sola cadena de caracteres entre comillas dobles.

Advertencia

  • Tenga en cuenta, que las matrices de caracteres se conocen como string con s minúscula y las instancias de la clase String se denominan cadenas con S mayúscula.
  • Las constantes de cadena especificadas con "comillas dobles" son tratadas como matrices de char y no como la clase String.
  • Las variables tipo char deben ser definidos siempre usando comillas simples. Ver cadena1, cadena2 y cadena3 en ejemplo 1.
  • Es posible crear cadenas como matriz de caracteres usando comillas dobles. Ver cadena4, cadena5 y cadena6 en ejemplo 1.

Comentarios

  • Se puede declarar una matriz de tamaño especifico. Ejemplo char cadena_1[15];
  • Declarar y asignar una matriz, sin terminal. Ejemplo char cadena_2[8] = {'a','r','d','u','in','o'};
  • Declarar y asignar una matriz, con terminal. Ejemplo char cadena_3[8] = {'a','r','d','u','in','o','\0'};
  • Declarar y asignar una matriz. Ejemplo char cadena_4[] = "arduino";
  • Declarar y asignar una matriz, dejando espacio en blanco. Ejemplo char cadena_5[15] = "arduino";
  • Declarar y asignar una matriz puntero. Ejemplo char* cadena_6[] = {"uno","dos","tres"};

Nota: Las cadenas deben terminan con un carácter nulo (código ASCII 0), para permitir que las funciones (como Serial.print()) sepan dónde termina la cadena. De lo contrario, continuarían leyendo bytes de memoria posteriores que no son realmente parte de la cadena.


Ejemplo 1

Posibilidades para la declaración de cadenas

  1. Declarar una matriz de caracteres inicializandola. Ver cadena1.
  2. Declarar una matriz de caracteres (con un carácter extra) y el compilador añadirá el carácter nulo requerido. Ver cadena2.
  3. Agregar explicitamente el caracter nulo. Ver cadena3.
  4. Inicializar una constante de cadena entre comillas; el compilador ajustará el tamaño de la matriz para adaptarse a la cadena y un carácter nulo de terminación. Ver cadena4.
  5. Incializar una matriz con un tamaño explícito y una constante de cadena. Ver cadena5.
  6. Inicializar la matriz, dejando espacio extra para una cadena larga. Ver cadena6.
char cadena1[15];
char cadena2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char cadena3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char cadena4[ ] = "arduino";
char cadena5[8] = "arduino";
char cadena6[15] = "arduino";

Ejemplo 2

En el código siguiente, el asterisco después del tipo de datos char* indica que se trata de una matriz de punteros. Todos los nombres de matrices son en realidad punteros, así que esto es necesario para hacer una matriz de matrices. Los punteros son una de las partes más esotéricas de C ++ para que los principiantes puedan entender, pero no es necesario entender los punteros en detalle para usarlos de la manera aquí descrita.

char* fraces[] = {
   "Esta es la cadena 1", 
   "Esta es la cadena 2", 
   "Esta es la cadena 3",
   "Esta es la cadena 4", 
   "Esta es la cadena 5",
   "Esta es la cadena 6"
};
void setup(){
   Serial.begin(115200);
}
void loop(){
   for (byte i=0; i<6; i++){
      Serial.println(fraces[i]);
   }
   delay(500);
}

Ejemplo 3

Como convertir una matriz char en long.

#define DEBUG(a) Serial.println(a);
char* texto1 = "-12345";
char* texto2 = "-12.345";
 
void setup(){
   Serial.begin(9600);
   long valor1 = atol(texto1);
   DEBUG(valor1);
  
   float valor2 = atof(texto2);
   DEBUG(valor2);
}
 
void loop(){
   //Nada.
}

Ejemplo 4

En el siguiente ejemplo usuario pretende usar 4K de SRAM cuando Arduino UNO solo tiene 2K.

int var[2000];    //Error

Ejemplo 5

char nom = 'Arduino';      //Error
char nom[] = "Arduino";

Vea también