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

#1
Foro Libre / ¿Que es un mantenedor?
25 Noviembre 2012, 22:04 PM
Buenas, desde hace un tiempo estuve buscando un poco para realizar mi 1º práctica, pero en una de ellas (al parecer) como requisito necesitaban algún programador para hacer un Mantenedor.

Y ahí mi pregunta, que es exactamente un mantenedor?? Google me da todo tipo de resultado, pero nada orientado a algún tipo de software ni nada.

Alguien sabe q es?
#2
Buenas, abro este hilo porque se me está siendo de dificultad encontrar material que trate de Particionado de la Memoria Principal en Windows.

Al googlear no he podido encontrar nada, siendo que hay poco material que explique como funciona el OS siendo un sistema operativo cerrado...

Alguien sabría donde pueda encontrar algo de información al respecto??
#3
creo que ya encontré la pifia, entonces era el sizeof(str.mensaje[ i ]) ? quizás ahi agarre sentido, no se refiere al tamaño del vector en sí, si no as bien del puntero, tambien intenté cambiarlo por strlen(str.mensaje[ i ]), pero también se cae, nada mas queda poner el numero en duro 2048 xd

#include <stdio.h>
#include <string.h>
#include "Lectura.h"
#include "estructura.h"

extern struct input str;

void* lectura(void* inputFile){

char* linea = (char*)inputFile;
FILE* archivo;
char dir[20];

strcpy(dir, "textos/");
strcat(dir, linea);

printf("\nDireccion del Texto es: /%s\n\n", dir);

int i;
if((archivo = fopen(dir, "r")) != NULL){
for(i = 0; !feof(archivo); i++){
fgets(str.mensaje[i], sizeof(str.mensaje[i]), archivo);
}
}
else{
perror("error al abrir el fichero\n");
return;
}
fclose(archivo);
}


Una duda, entonces si quiero usar cada vector para modificarlo luego... como le hago referencia?
#4
Lo he probado y solo puede ingresar textos de tamaño 8 en cada vector, por eso intenté imprimirel tamaño de cada vector y justamente indicaba 8, pero no cuadra, de donde salio ese 8 cuando le estoy especificando 2048. No se donde es que no cuadra
#5
Buenas, otra duda sencilla que no puedo responder, acá intentando asignar memoria a un arreglo de char y al parecer lo asigna mal, en que falla??

Tengo definida en una cabecera esta estructura que contiene un char#ifndef ESTRUCTURA_H
#define ESTRUCTURA_H

struct input{
int prueba;
char** mensaje; //habria que almacenarlo con malloc
}str;

#endif


main.c int i;
str.mensaje = (char**)malloc(sizeof(char*)*72);
for(i = 0; i<72; i++){ str.mensaje[i] = (char*)malloc(sizeof(char)*2048); }

printf("%d\n", sizeof(str.mensaje[2]));

Se supone que debería asignarse un tamaño 2048 para cada vector, pero en lugar de ello me imprime 8.

No se a que se debe este problema, alguien me podría aclarar en que me estoy equivocando??
#6
Gracias, ahora que lo intento (como siempre) me esta tirando una pifia

struct str{
int numLinea;
char* inputFile;
};

struct str Estructura = { 0, "Hola" };

void* getStruct(){
Estructura.numLinea++;
return (void*) Estructura;
}


con gcc -c Input.cme tira este error Input.c: En la funcion 'getStruc':
Input.c:10:2: error: no se puede convertir a un tipo puntero

y eso que aun no implemento la cabecera...
#7
Buenas, estoy haciendo una tarea y de momento me topé en una duda que no se como resolver.

Necesito ingresar un tipo de estructura como parámetro pero con (void*) a un archivo.c distinto al main.c

Esto es lo que tengo definido en el main.c:
struct str{
int numLinea;
char* inputFile;
} Estructura;


y esto es lo que recibo en lectura.c:
char** leer(void* Estructura){
str* Parquete = (str*) Estructura;


Al compilar, me da error, la estructura str está definido en el main.c, pero no en lectura.c

PD: Necesito hacer uso de void*, ya que (tengo entendido que) con pthread funciona así.

¿Tengo que redefinir la estructura en lectura.c? no importa si sea redundante??
#8
Buenas, estoy haciendo un programita, el cual, un archivo.c ajeno tengo definido la lectura a un fichero de texto y lo ingresa a un vector dinámico, por lo que mi archivo lectura.c tiene:

#include "Lectura.h"
#include "vectorDinamico.h"


Ahí es donde está la dificultad, ya que al definir el archivo cabecera de Lectura.h, tengo esto, ya que no reconoce el puntero vector_t:

#ifndef LECTURA_H
#define LECTURA_H
#include "vectorDinamico.h"

void leer(char*, vector_t*, int);

#endif


¿¿Cómo tendría que escribirse el Makefile de tal forma que compile bien??

¿¿o cuál sería el comando para compilar el programa en este caso??
#9
Gracias, no sabía que había que reservar también cada uno de los vectores, pensaba que con tener la matriz reservada ya estaba para llegar y escribir en ella.

Pero sin embargo el problema insiste, de hecho, luego de declarar la matriz con sus vectores, verifico su tamaño con sizeof(matriz), me retorna 8, por lo que el String linea tiene tamaño 8, le puse tamaño 1024, ya que si leo un párrafo, este no tiene salto de lineas, es una linea continua hasta que llega a un punto aparte.

char** matriz = (char**)malloc(sizeof(char*)*numPal);
for (j=0; j<numPal; j++) matriz[j] = (char*)malloc(15*sizeof(char));


void leer(char *archivoTexto, char** matriz, int palabras){

FILE* archivo;
int i = 1;
char linea [1024];

if((archivo = fopen(archivoTexto, "r")) == NULL){
perror("error al abrir el fichero\n");
}
else{
while(fgets(linea, sizeof(linea), archivo)){
matriz[0] = strtok(linea, " ");
printf("%s ", matriz[0]);
for( ;(matriz[i] = strtok( NULL, " ")) != NULL && i < palabras; i++){
printf("%s ", matriz[i]);
}
}
}
printf("\n\n");
}


Por cierto... soy nuevo en C y aun no capto miles de cosas, cuando me mostraste como asignarle memoria a matriz con malloc "(char**)malloc(NumPal*sizeof(char*))", no le estoy asignando el tamaño de memoria NumPal a toda la matriz? o le estoy asignando ese tamaño a cada vector?

PD2: Apesar del cambio, sizeof(matriz) me sigue arrojando tamaño 8, pero sin embargo, la matriz almacena todo el texto, que es lo que me está devolviendo sizeof??
#10
Buenas, quería leer desde un archivo y almacenar palabra por palabra en una matriz, por lo que cada uno de los vectores almacenaré una palabra.

He intentado hacerlo, pero sin éxito, en que me estaré confundiendo??


char** matriz = (char**)malloc(sizeof(char*)*512);
leer("texto.txt", matriz, 10);


#include <stdio.h>

void leer(char *archivoTexto, char** matriz, int palabras){

FILE* archivo;
int i = 1;
char linea [sizeof(matriz)];

if((archivo = fopen(archivoTexto, "r")) == NULL){
perror("error al abrir el fichero texto.txt\n");
}
else{
while(fgets(linea, sizeof(linea), archivo)){
matriz[0] = strtok(linea, " ");
printf("%s ", matriz[0]);
for( ;(matriz[i] = strtok( NULL, " ")) != NULL && i < palabras; i++){
printf("%s ", matriz[i]);
}
}
}
}
PD:
1º argumento: nombre del archivo que quiero leer
2º argumento: la matriz donde quiero insertar las palabras (1 en cada vector)
3º argumento: las cantidad de palabras que quiero insertar a la matriz

Pero justo cuando se imprime las palabras desde la matriz, lo único que me imprime es (null)