Título: Como manejar cadenas en c?? Publicado por: rod00x3 en 6 Febrero 2013, 20:27 pm Hola mi duda es sobre quisa lo mas facil pero nadamas no encuentro solucion
ya quedo claro que para manejar cadenas de caracteres solo hay que declararlas y deben terminar en nulo segun la forma mas sencilla de declarar cadenas de caracteres es: car cadena[]="Texto que desees"; Pero como puedo hacer para vacear la cadena?? es decir que esta ahora contenga cadena="" alguien podria audarme Título: Re: Como manejar cadenas en c?? Publicado por: avesudra en 6 Febrero 2013, 20:38 pm Mientras que la cadena en la posición i no sea igual que el final de línea (carácter nulo) , sustituye cadena en la posición i por 0.
Código También puedes hacer esto ( sustituye strlen -1 carácteres de cadena por 0's ): Código
¡Un saludo! Título: Re: Como manejar cadenas en c?? Publicado por: TopoJunior en 6 Febrero 2013, 21:14 pm No sé si te refieres a esto :SSS Pero por ejemplo una forma de declararlas es:::
Código: #include <stdio.h> Espero que te sirva!!!main() { char cadena[10]; // Aquí ya declaras la cadena... gets(cadena);// Para que nos entendamos, aqui puedes escribir y los caracteres que escribas se almacenan en la cadena. Debes escribir menos de 10, porque pusiste [10] caracteres. printf("Has escrito esto. %s", cadena); // Aquí lo que haces es decir que %s lo sustituya por lo que almacenamos en la cadena, y pondra lo que escribiste while(1); } Título: Re: Como manejar cadenas en c?? Publicado por: leosansan en 7 Febrero 2013, 14:14 pm En el caso del valor 0 no hace falta especificar número de caracteres a sustituir. Para cualquier valor distinto de cero se obtendrá la cedena nula:
Código
Saluditos!. Título: Re: Como manejar cadenas en c?? Publicado por: rod00x3 en 7 Febrero 2013, 18:00 pm Muchas gracias por sus respuestas ahorita mismo checo y les aviso como me fue gracias.
Título: Re: Como manejar cadenas en c?? Publicado por: rod00x3 en 7 Febrero 2013, 18:03 pm Perdon me surgio una duda que no acabo de entender... segun el codigo:
int main ( int argc, char *argv[] ) { char cadena[]="Texto que desees"; memset ( cadena , 0 , 1 ); /* <==aqui */ } Para evaluar que la cadena es nula basta con un: if(cadena==NULL){//hacer algo} o tengo que evaluar de alguna otra forma?? Título: Re: Como manejar cadenas en c?? Publicado por: rir3760 en 7 Febrero 2013, 18:59 pm Para evaluar que la cadena es nula basta con un: No tiene caso utilizar memset en la forma indicada ya que tiene el mismo efecto que la asignación:if(cadena==NULL){//hacer algo} o tengo que evaluar de alguna otra forma?? Código
Para verificar si el array almacena una cadena vacía basta con verificar el valor de su primer elemento: Código
Un saludo Título: Re: Como manejar cadenas en c?? Publicado por: rod00x3 en 7 Febrero 2013, 19:27 pm Dios gracias por sus respuestas es increible que algo tan importante no este tan documentado o no se alle en la web, todo lo que busco sobre cadenas en c me lleva a la libreria string.h
y solo son funciones de comparacion, y copiado, solo una duda mas, tengo una variable tipo int, quiero convertirla en cadena y concatenarla a otra cadena pero solo me muestra basura no el valor de la variable como tal. codigo: ... int p=12; char valor; char cad[100]; valor=(char)p; memset(cad,0,100); strcat(cad,"El numero actual es: "); strcat(cad,valor); strcat(cad,"apresiamos"); printf("%s",cad); ... Use lo anterior y funciono bien pero el problema se da con la concatenacion del entero deberia desplegar: El numero actual es: 12apresiamos Pero en lugar de eso despliega: El numero actual es: ??#$%"# (unos garabatos raros)apresiamos De antemano gracias. Título: Re: Como manejar cadenas en c?? Publicado por: avesudra en 7 Febrero 2013, 19:31 pm No tiene caso utilizar memset en la forma indicada ya que tiene el mismo efecto que la asignación: El mismo efecto no tiene, aparentemente sí, pero en cadena[1] sigue estando la 'e' y así sucesivamente hasta el carácter nulo de final de cadena. Depende de lo que quieras hacer con la cadena utilizas una u otra manera solo que la que dice rir3760 te sustituye el primer carácter por el final de línea, es obvio que la cadena quedaría vacía. Y yo sustituyo todos los elementos del array por 0. Así que quedaría igual solo que rir3760 tiene en el primer elemento un 0 y en los demás lo mismo: Caracter Nulo + "exto que desees" + Caracter Nulo , y yo en todos un 0, ya depende de lo que quieras hacer después con la cadena.Código
Para verificar si el array almacena una cadena vacía basta con verificar el valor de su primer elemento: Código
Un saludo EDITADO: Para convertir de entero a cadena no puedes hacer un cast directamente tienes que utilizar por ejemplo la función sprintf: Código Despliega unos garabatos raros porque un int no contiene los valores numericos como cadena, en una cadena, cada byte es una letra, en un int los 4 bytes conforman el número de 32 bits. Entonces al esperar strcat una cadena, se pone a buscar el carácter nulo y hasta que no lo encuentra te concatena carácteres raros. ¡Un saludo! Título: Re: Como manejar cadenas en c?? Publicado por: leosansan en 7 Febrero 2013, 22:30 pm Tienes que pasar el entero a cadena, versus ascii:
Código Saluditos!. Título: Re: Como manejar cadenas en c?? Publicado por: avesudra en 7 Febrero 2013, 23:43 pm Tienes que pasar el entero a cadena, versus ascii: leosansan si te fijas esa función no está definida en el ANSI-C solo que es soportada por algunos compiladores así que es mejor no usarla. Mira aquí donde pone portabilidad:Código Saluditos!. http://www.cplusplus.com/reference/cstdlib/itoa/ ¡Un saludo! Título: Re: Como manejar cadenas en c?? Publicado por: rir3760 en 8 Febrero 2013, 01:44 am El mismo efecto no tiene, aparentemente sí, pero en cadena[1] sigue estando la 'e' y así sucesivamente hasta el carácter nulo de final de cadena. Mi comentario fue en respuesta al mensaje inmediatamente anterior (de rod00x3), en el utiliza esa función en la forma:Código Por eso comente que no tiene caso utilizar una llamada a función cuando la asignación basta. Solo un comentario, si lo primero que se piensa hacer con un array es almacenar en el una cadena: Código No es necesario colocar primero (con la función memset) todos los caracteres a cero. Un saludo |