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 - geeke

#11
Cita de: class_OpenGL en 19 Octubre 2016, 22:56 PM
Hablando de CPU, si que se trataría de una excepción (lanzada por la CPU). Otra cosa es lo que considera C++/Sistema Operativo.

Tienes razón es una excepción lanzada por la CPU, pero el sistema operativo la envía como una señal de que ocurrió algún error a nivel hardware.
#12
No puedes usar los bloques try/catch para capturar un segmentation fault, porque no es una excepción mas bien es una señal que el sistema operativo envía como consecuencia al intentar acceder en alguna zona de memoria no permitida. Además no veo razón para hacer esto, porque continuar el programa después no es posible se invocaría comportamiento indefinido y esto no es nada seguro.
#13
Programación C/C++ / Re: [C] Manejo de cadenas
19 Octubre 2016, 02:18 AM
Un array solo lo puedes inicializar cuando lo declaras, en caso de no realizarlo, debes inicializar cada elemento manualmente.

Saludos.
#14
Yo para eliminar el molesto salto de linea utilizo strcspn()

Código (cpp) [Seleccionar]
buffer[strcspn(buffer, "\n")] = '\0';

Cuenta el numero de caracteres hasta encontrar el primer '\n' reemplazándolo por '\0'.
#15
Cita de: NOB2014 en 15 Octubre 2016, 17:55 PM
pero igual tengo la siguiente duda:
x en la línea 6 se iguala a col que vale 5, o sea, que para mí en la línea 8 reserva memoria para 5 enteros, luego en la línea 12 a la variable x le sumo col por lo tanto en la línea 14 x vale 10 y para mi criterio reservo memoria para 10 enteros, me podías decir en que estoy equivocado. -
Saludos.

No olvides que realloc reserva memoria en bytes, esto quiere decir que estas reasignando solo diez bytes, es decir espacio para dos enteros mas, teniendo en cuenta que un int es equivalente a cuatro bytes en un sistema de 32 bits. Por eso es importante no olvidar multiplicar size * sizeof(int).

Saludos.
#16
Tienes dos errores importantes en tu ultimo codigo:

- Primero, la notacion fil * i + j no accede al array como 2D, esto sobreescribe en cada iteracion del bucle externo lo asignado previamente, puedes comprobar esto imprimiendo el array a parte, lo que buscas es i * col + j.

- Segundo, solo reservas espacio para siente enteros no para diez, afortunadamento solo logras asignar siente enteros al array debido al error mencionado, caso contrario estarias desbordando el array.

#17
Cita de: NOB2014 en 10 Octubre 2016, 23:23 PM
Les dejo una pregunta para tratar de que me den un empujoncito para comenzar, si la primera línea es:
include <stdio.h>
Como harían para encontrar el error. -

En primer lugar en el enunciado del ejercicio no se menciona detectar este tipo de errores, te aconsejo resolver primero lo propuesto luego intentar ir mas alla. Te puedo dar una idea de como lo puedes encarar, lo que puedes hacer es usar contadores para cada caso establecerlos a cero. Luego por ejemplo si encuentras una llave de apertura incrementar el contador correspondiente y decrementarlo si encuentras una llave de cierre, posteriormente verificar el contador

Saludos
#18
Debes colocar el indicador de posición al comienzo del fichero nuevamente

long int tamanioArchivo( FILE *ptrArchivo, long int tamanio )
{
    fseek(ptrArchivo,0,SEEK_END);
    tamanio = ftell(ptrArchivo);
    rewind(ptrArchivo); //volver al inicio
    return tamanio;
}
#19
El buffer se vacía si ocurre alguno de estos tres puntos:

1) Cuando el buffer se llena.
2) Si el texto enviado a la salida estándar termina en '\n'.
3) Mediante la llamada a fflush(stdout).

En tu caso se puede omitir la llamada a fflush(stdout) ya que con el salto de linea se vacía el buffer.
#20
También puedes usar array de punteros

char *frases[size]
for (i = 0; i < size; i++)
   frases[i] = malloc(len_frase * sizeof(char));