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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [DUDA] añadir espacios al utilizar la función strcat
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: [DUDA] añadir espacios al utilizar la función strcat  (Leído 16,643 veces)
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
[DUDA] añadir espacios al utilizar la función strcat
« en: 8 Agosto 2012, 17:23 pm »

Estaba probando hacer un simple automatizador de netcat cuando me ha surgido un problema. Trata de que strcat concatena funciones y te devuelve la función final con la suma de todo, pero quiero que en dicha suma haya 2 espacios.

Quiero pasar de ncIPPuerto ---->    nc IP Puerto

El código que tengo es este.

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <windows.h>
  4.  
  5. int main(){
  6. char puerto[25], ip[25];
  7. char netcat[]="nc";
  8.  
  9. printf("Introduce la IP:\t");
  10. scanf("%s",&ip);
  11. printf("Introduce el puerto:\t");
  12. scanf("%s",&puerto);
  13. strcat(netcat,ip);
  14. strcat(netcat,puerto);
  15.  
  16. system(netcat);
  17. while(getchar() !='\n');  
  18. getchar();
  19.  
  20. }


« Última modificación: 8 Agosto 2012, 17:46 pm por Dryken » En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [DUDA] añadir espacios al utilizar la función strcat
« Respuesta #1 en: 8 Agosto 2012, 17:38 pm »

Utiliza la misma funcion strcat() para concatenar nc con un espacio, y lo mismo con la otra cadena.

Saludos.


En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
Re: [DUDA] añadir espacios al utilizar la función strcat
« Respuesta #2 en: 8 Agosto 2012, 17:52 pm »

daniyo eso lo probe hace tiempo y no funciono por eso lo preguntaba, no es tan simple como parece.

Tu te refieres a por ejemplo esto...

Citar
char puerto[25], ip[25], espacio[5]=" ";
char netcat[]="nc";

printf("Introduce la IP:\t");
scanf("%s",&ip);
printf("Introduce el puerto:\t");
scanf("%s",&puerto);
strcat(netcat,ip);
strcat(netcat,espacio);
strcat(netcat,puerto);

system(netcat);
while(getchar() !='\n'); 
getchar();

Da problemas al ejecutar. Si coloco tambien espacio[5]=""; , vamos sin el espacio de por medio sigue sin dejar espacio.
En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [DUDA] añadir espacios al utilizar la función strcat
« Respuesta #3 en: 8 Agosto 2012, 17:55 pm »

Pues prueba con "\t".
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
Re: [DUDA] añadir espacios al utilizar la función strcat
« Respuesta #4 en: 8 Agosto 2012, 18:13 pm »

Tampoco va daniyo al colocar espacio[5]=" \t";.

Al colocar /t lo que sucede es que la siguiente función strcat(netcat,puerto); no se muestra por pantalla, aparece con el /t todas las funciones antes que de esta sea utilizada.

queda así

Citar
ncxxx.xxx.xxx.xxx

En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: [DUDA] añadir espacios al utilizar la función strcat
« Respuesta #5 en: 9 Agosto 2012, 00:06 am »

Hola! busca sprintf

Saludos
En línea

Ahorrate una pregunta, lee el man
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: [DUDA] añadir espacios al utilizar la función strcat
« Respuesta #6 en: 9 Agosto 2012, 00:16 am »

¡Buenas!

De un primer vistazo lo que veo es que el problema puede estar en que la cadena netcat solo tiene 3 posiciones de memoria ({'n','c','\0'}). Prueba a darle mayor dimension y cuentanos.

Código
  1. char netcat[30]="nc"
  2.  

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
Re: [DUDA] añadir espacios al utilizar la función strcat
« Respuesta #7 en: 9 Agosto 2012, 01:52 am »

durasno hebuscado como me has dicho y he probado la función sprintf. he visto que la ventaja que tiene es que en comparación con strcat permite espacios pero no permite ejecutar funciones del sistema system();

Aquí se puede ver que concatena con espacios y luego imprime por pantalla. No he colocado  system(netcat); porque entonces no funciona. vamos que con esta función estoy con las mismas, tiene un lado positivo y otro negativo. Os he dejado el código para que lo veáis de ejemplo.

Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3. int main(){
  4.   char puerto[25], ip[25], netcat[80];
  5.  
  6.   printf("Introduce la IP:\t");
  7.   scanf("%s",&ip);
  8.   printf("Introduce el puerto:\t");
  9.   scanf("%s",&puerto);
  10.  
  11.   sprintf(netcat, "\nnc %s %s\n", ip, puerto);
  12.   puts(netcat);  
  13.   getchar();
  14. }

Por cierto do-while probé a colocar una dimensión mayor pero no funcionó, seguramente será otra cosa.

Pufff...te pones a pensar y te das cuenta que colocar un simple espacio no es tán fácil como parece en strcat y que en sprintf no es posible ejecutar system(); , a ver si consigo hallar la forma en strcat.
En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
Fire544

Desconectado Desconectado

Mensajes: 85


"Escucha el sonido del 0, 1"


Ver Perfil WWW
Re: [DUDA] añadir espacios al utilizar la función strcat
« Respuesta #8 en: 9 Agosto 2012, 04:16 am »

Hola Dryken: mira todo lo que haces esta bien, tienes que dejar cada char [], con un espacio antes de concatenar, intenta hacer esto.

"nc ", " ip", " puerto".

Código
  1. char vector[]="nc ";
  2. strcat(vector, ip)
  3. strcat(vector, puerto);
  4. system(vector);
  5.  

Si te fijas en el codigo, todo bien pero algo ilogico, porque a lo mejor lo has intentado, pero fijate cuando termino de inicializar mi vector al declararlo, dejo el ultimo bytes en " ", esto es para concatenar con espacios, ten esto en cuenta y hazlo con char ip[], puerto[], a lo mejor puerto seria int, entonces haces un cast "strcat(vector, (int)puerto);"
« Última modificación: 9 Agosto 2012, 04:19 am por Fire544 » En línea

"Si enseñas a pezcar a un niño lo ayudas para toda la vida, si pezcas para alimentarlo lo ayudas por un momento".
durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: [DUDA] añadir espacios al utilizar la función strcat
« Respuesta #9 en: 9 Agosto 2012, 05:11 am »

Citar
no permite ejecutar funciones del sistema system();
nose de donde sacaste eso. Lo unico que hace sprintf es almacenar una cadena, con cierto formato, en un arreglo; en tu caso en netcat

Ejemplo simple:
Código
  1. int main(void)
  2. {
  3. char a[]="dir";
  4. char b[]="Java" //es una carpeta que tengo en el escritorio
  5. char cmd[20];
  6.  
  7. sprintf(cmd,"%s %s",a,b); // armo el comando a ejecutar
  8.  
  9. system(cmd); // ejecuto: dir Java
  10. //system("PAUSE");
  11. }

No uso nc ya que la consola no me reconoce el comando como valido(hay q instalarlo?? :S)

Saludos
En línea

Ahorrate una pregunta, lee el man
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO]-[ayuda] funcion cambiar linea al estilo space para dejar espacios
.NET (C#, VB.NET, ASP)
faralito 3 4,903 Último mensaje 29 Enero 2009, 16:02 pm
por faralito
Añadir la función buscar a mi web
Desarrollo Web
chocola 3 3,616 Último mensaje 23 Noviembre 2011, 05:11 am
por DarK_FirefoX
[Duda C] Como añadir variable a la función system() « 1 2 »
Programación C/C++
Dryken 10 9,606 Último mensaje 3 Julio 2012, 14:28 pm
por Dryken
Espacios en concatenación strcat. « 1 2 »
Programación C/C++
programator11 13 7,616 Último mensaje 7 Agosto 2014, 20:05 pm
por rir3760
¿Se puede añadir una funcion a string.h? « 1 2 »
Programación C/C++
mester 10 5,867 Último mensaje 25 Diciembre 2015, 01:55 am
por mester
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines