Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Beginner Web en 9 Julio 2018, 04:10 AM

Título: Alguien sabe porque el espacio me ocupa 2 lugares?
Publicado por: Beginner Web en 9 Julio 2018, 04:10 AM
Tengo problemas al  definir la cantidad de espacios del arreglo de caracteres en 1 e inicializarla con un espacio entre comillas simple me sale que no se puede y al colocarle dos espacios al arreglo e inicializarlo con dos espacios y  doble comillas que son para cadanes si me deja  :o

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstring>

using namespace std;

int main(){
char nombre[40], apellido[40], completo[80]="Programadora: ", espacio[2]=" ";
cout << "Ingrese nombre: ";
gets(nombre);
cout << "Ingrese apellido: ";
gets(apellido);
strcat(completo,nombre);
strcat(completo,espacio);
strcat(completo,apellido);
cout << completo << endl;
system ("pause");
}


Datos de entrada:Maria Lux;
Datos de entrada:Grow;
Datos de salida:Programadora: Maria Lux Grow;

Gracias de antemano tios! ;-)
Título: Re: Alguien sabe porque el espacio me ocupa 2 lugares?
Publicado por: MAFUS en 9 Julio 2018, 04:43 AM
Una cadena siempre termina con el carácter \0, así que una cadena literal generada con comillas dobles tiene ese carácter al final que el compilador agrega automáticamente. También es la razón por lo que hay que agregar un carácter más a los arrays que realmente serán cadenas.

Un simple carácter de comillas simples no es una cadena, porque le falta el carácter de fin de cadena, y porque la variable que lo aloja no es un escalar entero, es decir, no es array ni puntero.
Título: Re: Alguien sabe porque el espacio me ocupa 2 lugares?
Publicado por: Beginner Web en 9 Julio 2018, 05:14 AM
Ha cierto, me re-marie