Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - kutcher

#41
Cita de: CalgaryCorpus en 28 Julio 2014, 06:24 AM
por lo que

puntero[ -1 ]

es igual a

*( puntero - 1 )

Viéndolo de esa forma todo tiene mas sentido, solo una ultima consulta luego de esta asignación la cadena s queda modificada no?
#42
 Buenas, estoy tratando de implementar mi propia función strtok y buscando por la
red he encontrado un método bastante curioso el cual utiliza el numero negativo
-1 como indice en un array de caracteres para asignarle el carácter nulo

En consecuencia extrañamente obtienes el primer token en el puntero llamado
token, cosa que no entiendo como sucede aquí el código:

Código (cpp) [Seleccionar]
char *mystrtok(char *s, const char *delim)
{
   int c, sc = *delim;
   char *token = s;

   do{
       c = *s++;
       if (c == sc)
       {
           s[-1] = '\0';
           return (token);
       }
   }while (*s);

   return NULL;
}


Es la versión corta la modifique un poquito para exponer la parte que no entiendo
#43
Gracias a todos por responder, voy aprobar el método que expuso Blaster me llamo la atención ¿nosé si es seguro esto? 
#44
Buenas, estoy codificando un programa y me urge saber cuantos dígitos tiene un
número que es de tipo int por ejem:

15742 = 5 dígitos
1234 = 4 dígitos
13 = 2 dígitos

He probado con sizeof pero no funciona ¿Alguien tiene alguna idea de como hacer esto?
#45
Cita de: nolasco281 en 22 Julio 2014, 19:21 PM
Hola Utiliza el dev-c++
Y creo que estas en lo correcto debo de probar con otros compiladores?

Busque información sobre el tema y encontre que las estructura REGPACK esta definida en la libreria bios.h
#46
Cita de: nolasco281 en 22 Julio 2014, 18:43 PM
Gracias por responder kutcher ese fue todo el codigo que nos proporcionaron disculpa mi ignorancia no entiendo declaración de la estructura REGPACK.
Ya que tengo otros ejemplos parecidos a este pero este es el unico que no me funciono.

En ese caso debe ser una estructura definida en alguna libreria que utilizas, que compilador utilizas?
#47
Cita de: nolasco281 en 22 Julio 2014, 17:52 PM
Código (cpp) [Seleccionar]
char *buffer = (char *)alloc(512);

La función seria alloca(); esta función no es estandar es utilizada para asignar memoria en la pila, recomiendo que utilices las estandares como malloc y compañia

Cita de: nolasco281 en 22 Julio 2014, 17:52 PM
luego de hacer lo anterior me muestra el siquiente error
No se a que se deba talvez alquien me pueda orientar un poco.

Podrias publicar declaración de la estructura REGPACK
#48
Cita de: 718208 en 22 Julio 2014, 03:11 AM
como que son siempre iguales? son datos ingresados por un actor/usuario

Lo que dice CalgaryCorpus es cierto, al tratarse de un cuadrado todos los lados del mismo son iguales.
#49
Programación C/C++ / Re: Temporizadores
16 Julio 2014, 01:48 AM
Cita de: Juan821 en  9 Julio 2014, 03:56 AM
Como hago para luego de que pase un tiempo el programa haga lo que le ordene por ejemplo que deje digitar un numero por 60 segundos por ejemplo despues de esos 60 segundos no deje digitar nada y salgo un mensaje que me diga ha excedido su tiempo

Buenas, la unica forma que se me ocurre para lograr eso sin el uso de hilos, es haciendo uso de las funciónes kbhit() y getche() de la libreria conio.h

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstddef>
#include <ctime>
#include <conio.h>

bool get_input ( char *buffer, std::size_t size, int timeout )
{
   std::time_t start = std::time ( 0 );
   std::size_t n = 0;

   for (;;)
   {
       if ( n == 0 && std::difftime (std::time(0), start ) >= timeout )
           return false;

       if (kbhit()) {
           if ( n == size - 1 )
               break;
           char ch = (int)getche();
           if ( ch == '\r' )
           {
               buffer[n++] = '\n';
               break;
           }
           else
               buffer[n++] = ch;
       }
   }
   buffer[n] = '\0';

   return true;
}

int main(void)
{
   char buffer[20] = {};

   if ( !get_input (buffer, 20, 5) ) {
       std::cout << "Tiempo agotado\n";
       buffer[0] = '\n';
   }
   std::cout<<"\nSalida: " << buffer;

   return 0;
}


Se que la libreria conio.h no es recomendable utilizarla
#50
Cita de: Eternal Idol en  1 Julio 2014, 09:31 AM
De esta manera tenes una funcion capaz de cambiar el case (de minuscula a mayuscula y viceversa).

Wow.. interesante forma de hacerlo por lo versátil que es, ahora mismo lo pruebo a ver que tal