elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  strcpy entre char
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: strcpy entre char  (Leído 2,363 veces)
Jupiter34

Desconectado Desconectado

Mensajes: 24


Ver Perfil
strcpy entre char
« en: 31 Octubre 2012, 19:31 pm »

Estimados,

Consulta...

Estuve trabajando con la funcion strcpy. Uds, saben me esta agregando un \n antes del \0. Lo que hace que al listarlo, mostrarlo, me haga un salto de linea.

Como puedo hacer para ir hasta el primer \n y eliminarlo? para que quede lapalabra\0

Que usuarian?

Saludos!


En línea

NeoB

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Re: strcpy entre char
« Respuesta #1 en: 31 Octubre 2012, 20:42 pm »

Puedes buscar el salto de línea y reemplazarlo por el '\0'.
Código
  1. #include <stdio.h>
  2.  
  3. void func(char *str)
  4. {
  5. int i;
  6. for (i=0; i<=strlen(str); i++)
  7. {
  8. if ( str[i] == '\n' ) str[i] = '\0';
  9. }
  10. }
  11.  
  12. int main()
  13. {
  14. char str[20] = "Hola tio!\n";
  15. func(str);
  16. printf(str);
  17. return 0;
  18. }
  19.  
Claro, que eso te eliminaría el resto de la cadena después del salto.
Dime si no es lo que buscas.


« Última modificación: 31 Octubre 2012, 20:45 pm por NeoB » En línea

Jupiter34

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: strcpy entre char
« Respuesta #2 en: 31 Octubre 2012, 20:53 pm »

Si si...

Gracias NeoB!

Toda esa info la grabo en un archivo...obviamente, al levantarlo...las primeras lineas tienen el /n y la ultima es directamente /0

Esta haciendo esta función, que va ser la contrapartida de la tuya!

Código
  1. void trim(char* b){
  2.   if (!(b[strlen(b)-1]=='\n')){
  3.        strcat(b,"\n");
  4.   }
  5. }
  6.  
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: strcpy entre char
« Respuesta #3 en: 1 Noviembre 2012, 02:41 am »

En el primer ejemplo no es necesario utilizar la función "strlen", basta con verificar si el carácter procesado es '\n' o '\0'. Otra forma de buscar el carácter '\n' es mediante la función "strchr" (prototipo en <string.h>):
Código
  1. void func(char *str)
  2. {
  3.   char *p;
  4.  
  5.   if ((p = strchr(str, '\n')) != NULL)
  6.      *p = '\0';
  7. }

Y en el segundo ejemplo si se obtiene la longitud de la cadena con "strlen" no es necesario utilizar "strcat" ya que se puede hacer de forma manual (ya que son solo dos caracteres):
Código
  1. void trim(char *b)
  2. {
  3.   size_t i = strlen(b);
  4.  
  5.   if (b[i - 1] != '\n'){
  6.      b[i] = '\n';
  7.      b[i + 1] = '\0';
  8.   }
  9. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Jupiter34

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: strcpy entre char
« Respuesta #4 en: 1 Noviembre 2012, 02:55 am »

Excelente la ayuda de todos! Muy agradecido! Jamas hubiese llegado a esas resoluciones! Soy mas iterativo!!!

Mil gracias!
En línea

BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: strcpy entre char
« Respuesta #5 en: 1 Noviembre 2012, 03:44 am »

Excelente la ayuda de todos! Muy agradecido! Jamas hubiese llegado a esas resoluciones! Soy mas iterativo!!!

Mil gracias!

Ya que te quedaste sorprendido haz méritos para que tú mismo puedas llegar a esas soluciones. La clave es programar, no hay otra clave mayor que esa. Programar, programar, programar y programar, tratando de resolver diferentes problemas.

Aunque no llegues al resultado final que debes, el hecho de practicar, investigar, y buscar soluciones te vendrá de perlas, porque aprenderás nuevas ideas, conceptos, técnicas que en un futuro seguro que te servirán. Y además, al forzarte a resolverlos, adquirirás experiencia en la resolución de esos problemas y para el futuro tendrás un abanico mayor de ideas para resolver un determinado problema.

Así que mi consejo es que programes, programes, y programes. Y cuando ya veas que no puedes más, pues expones el ejercicio y tu resolución en el foro, para preguntar o para impresionarnos ;)

Además es muy importante saber lo que estás haciendo en cada momento. Es decir, saber exactamente qué hace el programa en todo momento sin tener que compilarlo.

Te dejo una imagen cómica, aunque es realista: https://pbs.twimg.com/media/A6Xjm5eCYAEubDL.jpg:large

¡Saludos y perdón por mis párrafos!
« Última modificación: 1 Noviembre 2012, 03:49 am por BatchianoISpyxolo » En línea

Puede que desees aprender a programar desde 0: www.espascal.es
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda doble puntero char a matriz de char
Programación C/C++
neo_from_cs_matrix 3 6,031 Último mensaje 5 Septiembre 2011, 03:53 am
por rir3760
problema con uso de strcpy
Programación C/C++
m@o_614 2 2,572 Último mensaje 19 Diciembre 2011, 18:37 pm
por m@o_614
ERROR excepcion: char* = char* + n « 1 2 »
Programación C/C++
x64core 10 5,607 Último mensaje 21 Enero 2012, 20:20 pm
por Eternal Idol
Lectura de matríz de char como char** o DWORD*
Programación C/C++
david_BS 3 3,253 Último mensaje 20 Febrero 2012, 20:49 pm
por Eternal Idol
Ayuda en C. Unir char a char[] SOLUCIONADO
Programación C/C++
NeoB 5 5,251 Último mensaje 10 Abril 2012, 23:07 pm
por NeoB
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines