UTNianos

Versión completa: Consulta caracter vacio
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
mmm... entonces debería de funcionarte Confused..

Estás segura que pusiste Nombre == "" y no Nombre = "" ?? (me pasó en operativos, de poner "igual" en vez de "igual igual" =P).

Probaste con:

if(Nombre[0]=='\0') ???

cosha mandinga
void Saludar( const char* Nombre )
{

if(Nombre[0] == '\0') printf("Buen dia.\n");
else printf("Buen dia, %s.\n",Nombre);
return;
}

Probaste asi?
(17-05-2013 22:03)guriwashere escribió: [ -> ]Ahhh, disculpame, el 0x20 es el espacio ....

probá esto



if (sizeof (cadena) < 1) {
// tarea
} else {
// otra cosa
}


Eso tampoco me funcionó =(
Cita:el problema es que le ponés %d para imprimir un número. con %c te muestra el caracter, aunque si le ponés \0 no te va a mostrar nada.

Y si, era la idea, ver que valor en "numero" tiene =P, poniendole %c no iba a ver una goma, incluso si tenía un \n =P
tengo qeu venir a tirar luces (?)

http://www.cplusplus.com/reference/cstdio/gets/

Spoiler: Mostrar
Cita:Reads characters from the standard input (stdin) and stores them as a C string into str until a newline character or the end-of-file is reached.

The newline character, if found, is not copied into str.

A terminating null character is automatically appended after the characters copied to str.

Notice that gets is quite different from fgets: not only gets uses stdin as source, but it does not include the ending newline character in the resulting string and does not allow to specify a maximum size for str (which can lead to buffer overflows).


y como la gente no pone los enunciados simplemente digo.

el parametro que recibis con que funcion lo levantaste? gets() ? si es asi el /0 deberia funcionar
Cita:sizeof (cadena)

guriwashere sizeof(cadena) no daría 4 siempre, porque es un puntero? (pregunto, no toco C hace mil =P)

Cita:el parametro que recibis con que funcion lo levantaste? gets() ? o alguna hecha a mano con el stdio ? al final del string hay eof, y hasta donde recuerdo, no hay 1 solo. yo compararia el primer char con EOF , o tambien -1 , pero no recuerdo como funciona ahi la cosa. no se si podes poner directamente alguna magia como "if (char +1)" o "if (char!=EOF)){} else if(char==EOF){}"

La chica pone constantes. O sea, lo pone "harcodeado", fijate en un post anterior.
(17-05-2013 22:05)Ichiluk escribió: [ -> ]


void saludar(const char* nombre) {

if (nombre[0] == '\0' || nombre[0] == '\n')
puts ("Buen Dia.");
else
printf("Buen Dia, %s.\n", nombre);
}


el return no te hace falta.


GRACIAS!!! No estaba usando el [0] porque asumía que era un caracter y eso no podía hacerlo!! Un millon de gracias!! Con esto funciona!

(17-05-2013 22:14)Imakuni escribió: [ -> ]mmm... entonces debería de funcionarte Confused..

Estás segura que pusiste Nombre == "" y no Nombre = "" ?? (me pasó en operativos, de poner "igual" en vez de "igual igual" =P).

Probaste con:

if(Nombre[0]=='\0') ???

cosha mandinga

Estoy segura porque vengo poniendo == con todas las posibilidades!! Acabo de probar con if(Nombre[0]=='\0') y asi funciona! Gracias!

SOY FELIZ!! Lo resuelvo con if(Nombre[0]=='\0')!! Después de luchar por horas (y no jodo, hace 4 horas q vengo con esto)
Lo logré gracias a ustedes!!! =D
(17-05-2013 21:56)mercevico escribió: [ -> ]
(17-05-2013 21:49)JulianD escribió: [ -> ]Pero si vos le estas pasando una cadena de caracteres como argumento a una funcion, eso es un string no un char.
Si estas pasando un nombre de mas de un char necesariamente tiene que ser un puntero a char, lo que puede ser interpretado como un string.
Mas alla de que la comparacion la hagas sobre un char.

Yo pondria:

if ((Nombre[0]=='\n')||(Nombre[0]=='\0')) // Comparas el primer caracter de la cadena con el salto de linea y el fin de cadena a la vez, depende que funcion estes usando para tomar el nombre te toma el enter o no te pone el salto de linea..

sino como te dijeron, con strlen:

if (strlen(Nombre)==0)

Mi código es exactamente:
void Saludar( const char* Nombre ){

if(Nombre == ????)
printf("Buen dia.\n");
else
printf("Buen dia, %s.\n",unNombre);
return;


Cuando le trato de poner como cadena, no me lo acepta, me tira error al compilar, y el strlen, no lo tengo, sólo puedo usar la libreria stdio.. y esa funcion esta en otra libreria..

Buenas, veo que tenes varios problemas de teoria, voy a tratar de esclarecertelos un poco. Vos estas recibiendo un char *, es decir un puntero que apunta a un char, estos se utilizan para albergar la ubicacion del primer caracter de una cadena de caracteres (strings). Si vos queres saber si vino vacio, depende como se haya acordado, te va a venir vacio o con espacios. Para ello, si no queres utilizar funciones de la string.h (libreria con funciones dedicada al manejo de strings) porque no estas familirarizada, directamente podes preguntar por Nombre[0] == ' ' ó bien preguntar por Nombre[0] = '\0' o por ambos con un OR logico (||).
(18-05-2013 05:05)Abend escribió: [ -> ]
(17-05-2013 21:56)mercevico escribió: [ -> ]
(17-05-2013 21:49)JulianD escribió: [ -> ]Pero si vos le estas pasando una cadena de caracteres como argumento a una funcion, eso es un string no un char.
Si estas pasando un nombre de mas de un char necesariamente tiene que ser un puntero a char, lo que puede ser interpretado como un string.
Mas alla de que la comparacion la hagas sobre un char.

Yo pondria:

if ((Nombre[0]=='\n')||(Nombre[0]=='\0')) // Comparas el primer caracter de la cadena con el salto de linea y el fin de cadena a la vez, depende que funcion estes usando para tomar el nombre te toma el enter o no te pone el salto de linea..

sino como te dijeron, con strlen:

if (strlen(Nombre)==0)

Mi código es exactamente:
void Saludar( const char* Nombre ){

if(Nombre == ????)
printf("Buen dia.\n");
else
printf("Buen dia, %s.\n",unNombre);
return;


Cuando le trato de poner como cadena, no me lo acepta, me tira error al compilar, y el strlen, no lo tengo, sólo puedo usar la libreria stdio.. y esa funcion esta en otra libreria..

Buenas, veo que tenes varios problemas de teoria, voy a tratar de esclarecertelos un poco. Vos estas recibiendo un char *, es decir un puntero que apunta a un char, estos se utilizan para albergar la ubicacion del primer caracter de una cadena de caracteres (strings). Si vos queres saber si vino vacio, depende como se haya acordado, te va a venir vacio o con espacios. Para ello, si no queres utilizar funciones de la string.h (libreria con funciones dedicada al manejo de strings) porque no estas familirarizada, directamente podes preguntar por Nombre[0] == ' ' ó bien preguntar por Nombre[0] = '\0' o por ambos con un OR logico (||).

GRACIAS!! Realmente si tengo muchos problemas de teoría, porque perdí muchas clases.. Muchisimas gracias por esta explicacion, porque no sabia lo que significaba ese * y la verdad que me lo dejaste muy claro =) ...
y si usas strcmp?? es una funcion para comparar cadenas.. si son iguales devuelve cero entonces vos podes comparar Nombre contra caracter vacio y preguntar si da cero.
http://es.wikipedia.org/wiki/Strcmp[/code]
Páginas: 1 2
URLs de referencia