[DUDA] añadir espacios al utilizar la función strcat

Iniciado por Dryken, 8 Agosto 2012, 17:23 PM

0 Miembros y 2 Visitantes están viendo este tema.

Fire544

Si ahora si estas en lo correcto, jajaja demasiadas operaciones innecesarias !! Gracias por la aclaracion do-while !!  ;-)
"Si enseñas a pezcar a un niño lo ayudas para toda la vida, si pezcas para alimentarlo lo ayudas por un momento".

BlackZeroX

Cita de: Fire544 en 10 Agosto 2012, 15:39 PM
BlackZeroX (Astaroth) Comprendo, tienes razon, luego se producirian errores logicos, pero mira esta seria una buena correccion !!


printf("Named Server: ");
    gets(ip);
   
    if(strlen(ip)>=15) //comprobamos que nuestro vector no este al limite de caracteres
    {return 1;} //tambien puedes devolver un mensaje avisando de la falta de espacio


Estas errado, lo mejor es usar una función QUE limite esto... es por ello que en el código que yo publique use fgets(), checa-lo...

Dulces Lunas!¡.
The Dark Shadow is my passion.

Fire544

#22
Cita de: BlackZeroX (Astaroth) en 10 Agosto 2012, 23:19 PM
Estas errado, lo mejor es usar una función QUE limite esto... es por ello que en el código que yo publique use fgets(), checa-lo...

Dulces Lunas!¡.

Si comprendo, tienes mucha razon, y claro entiendo el uso de fgets(); en tu codigo, pero opte por desarrollar mi codigo con esta logistica ya que  Dryken no queria eso, pero a ver que dice el ahora !!! Gracias BlackZeroX (Astaroth) ;-)
"Si enseñas a pezcar a un niño lo ayudas para toda la vida, si pezcas para alimentarlo lo ayudas por un momento".

s00rk


Código (cpp) [Seleccionar]
#include <stdio.h>
#include <windows.h>
#include <iostream>

using namespace std;

int main(){
   char puerto[25], ip[25], netcat[80];

   cout << "Introduce la IP: "<< endl;
   cin >> ip;
   cout << "Introduce el puerto: " << endl;
   cin >> puerto;
   
   sprintf(netcat, "nc %s %s", ip, puerto);
   system(netcat); 
   cin.getch();
   return 0;
}

BlackZeroX

#24
.
Si no me equivoco usar cin  con un array de char es lo mismo que usar gets() con el array char (corrijan-me)... lo mejor seria usar el tipo string si se esta en C++.

Código (cpp) [Seleccionar]


int main(){
  string puerto,
         ip,
         netcat;

  cout << "Introduce la IP: ";
  cin >> ip;
  cout << "Introduce el puerto: ";
  cin >> puerto;
  netcat = "nc " + ip + " " + puerto;
  system(netcat);  
  cin.getch();
  return 0;
}



Dulces Lunas!¡.
The Dark Shadow is my passion.

rir3760

Cita de: BlackZeroX (Astaroth) en 11 Agosto 2012, 08:06 AMSi no me equivoco usar cin  con un array de char es lo mismo que usar gets() con el array char (corrijan-me)... lo mejor seria usar el tipo string si se esta en C++.
Es correcto.

En el sitio C Plus Plus se describe en detalle el operador "<<", la sección que nos incumbe:
CitarExtracts characters and stores them as a c-string (i.e. in successive locations starting at location pointed by str and terminated by a null-character). Extraction ends when the next character is either a valid whitespace or a null character, or if the End-Of-File is reached. The terminating null character is automatically appended after the extracted characters.

The extraction operation can be limited to a certain number of characters (thus avoiding the possibility of buffer overflow) if the field width (which can be set with ios_base::width or setw) is set to a value greater than zero. In this case, the extraction ends one character before the count of characters extracted reaches the value of field width, leaving space for the ending null character. After a call to this extraction operation the value of the field width is automatically reset to zero.

Un saludo
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