¿Cómo se representa el carácter vacío?

Actualmente estoy escribiendo un pequeño progtwig pero sigo recibiendo este error al comstackr

error: constante de caracteres vacíos

Me doy cuenta de que es porque estoy tratando de reemplazar un char válido con un espacio vacío c[i]='' pero no he podido encontrar otra forma de representarlo.

Puede usar c[i]= '\0' o simplemente c[i] = (char) 0 .

El carácter nulo / vacío es simplemente un valor de cero, pero también puede representarse como un carácter con un cero escapado.

No puedes almacenar “ningún personaje” en un personaje, no tiene sentido.

Como alternativa, puede almacenar un carácter que tenga un significado especial para usted, por ejemplo, null char '\0' , y tratar esto especialmente.

El espacio vacío char sería ' ' . Si estás buscando un valor nulo sería '\0' .

Sí, c[i]='' no es un código válido. Entre paréntesis la constante de caracteres entre ' ' , por ejemplo, c[i] = 'A'; char a. pero no escribes ningún char entre '' .

El espacio vacío no es más que suponer que si desea un espacio asignado, haga lo siguiente:

 c[i] = ' '; // ^ space 

Si quiere asignar nul char entonces haga:

 c[i] = '\0'; // ^ null symbol 

Ejemplo: Supongamos que c[] una cadena (nul \0 terminó la matriz de caracteres) si tiene una cadena. por ejemplo:

 char c[10] = {'a', '2', 'c', '\0'}; 

Y reemplazas la segunda char con espacio :

 c[1] = ' '; 

y si lo imprime usando printf como sigue:

 printf("\nc: %s", c); 

entonces la salida sería:

  c: ac // ^ space printed 

Y reemplazas el segundo char con ‘\ 0’ :

 c[1] = '\0'; 

entonces la salida sería:

  c: a 

porque la cadena terminó con \0 .

No hay tal cosa como el “carácter vacío”.

Si necesita un carácter de espacio, se puede representar como un espacio: c[i] = ' ' o como su equivalente octal ASCII: c[i] = '\040' . Si necesita un carácter NUL que sea c[i] = '\0' .

Para representar el hecho de que el valor no está presente, tiene dos opciones:

1) Si todo el rango de char es significativo y no puede reservar ningún valor, entonces use char* lugar de char :

 char** c = new char*[N]; c[0] = NULL; // no character *c[1] = ' '; // ordinary character *c[2] = 'a'; // ordinary character *c[3] = '\0' // zero-code character 

Luego tendrá c[i] == NULL para cuando el carácter no esté presente y, de lo contrario, *c[i] para caracteres comunes.

2) Si no necesita algunos valores que se char representar en caracteres, reserve uno para indicar que el valor no está presente, por ejemplo, el carácter '\0' .

 char* c = new char[N]; c[0] = '\0'; // no character c[1] = ' '; // ordinary character c[2] = 'a'; // ordinary character 

Luego tendrá c[i] == '\0' para cuando el carácter no esté presente y, de lo contrario, los caracteres comunes.

Podría ser útil asignar un nulo en una cadena en lugar de hacer explícitamente que algún índice sea el carácter nulo '\0' . He usado esto para probar funciones que manejan cadenas asegurando que se mantengan dentro de los límites apropiados.

Con:

 char test_src[] = "fuu\0foo"; 

Esto crea una matriz de tamaño 8 con valores:

 {'f', 'u', 'u', '\0', 'f', 'o', 'o', '\0'} 

Hay dos formas de hacer la misma instrucción, es decir, una cadena vacía. La primera forma es asignar una cadena vacía en la memoria estática:

 char* my_variable = ""; 

O, si quieres ser explícito:

 char my_variable = '\0'; 

El camino publicado arriba es solo para un personaje. Y, la segunda forma:

 #include  char* my_variable = strdup(""); 

No olvides usar free () con este porque strdup () usa malloc en el interior.