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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problemas pasando por referencia un char...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas pasando por referencia un char...  (Leído 1,677 veces)
jomoza

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Problemas pasando por referencia un char...
« en: 19 Diciembre 2014, 00:02 am »

Código:
#include <stdlib.h>
#include <stdio.h>
#include <err.h>
#include <pthread.h>

#define NUM_THREADS 10


typedef struct
{
char* tcomanda;
int tcores;
int tmemory;
int tnumero;

}sthread;


void Inicializar(char file,sthread t[])
{

printf("%c\n", file);
//FILE *File = fopen(file, "r"); //Abrir archivo que se le pasa por referencia

int tata=sizeof(file);
printf("%d\n", tata);


char *line;
size_t len;
int i=-1;//Le damos valor -1 para que la primera linea de COMANDO sea en i=0
int numcomands;

char comanda; //Variables en las que se guardaran el resultado de leer el archivo
int coreses;
int rmdmen;

if(File == NULL)
{
err(1, "commands.txt");
}//File Error Control

while( i <= NUM_THREADS &&  getline(&line,&len,file) != -1)
{
if (i<0)
{
sscanf(line, "%d", &numcomands); //Tenemos en cuenta que la primera linea es el 10
++i;
}else{
sscanf(line, "%[^'·']·%02d·%d", comanda, &coreses, &rmdmen); //Sacamos de la linea obtenida la informacion
t[i].tcomanda=comanda;//Y la guardamos en la estructura
t[i].tcores=coreses;
t[i].tmemory=comanda;
++i;

printf("%s\n", );
}
}
}


// argv[0]~= ./Prac3 ||argv[1]~= commands.txt ||argv[2]~= nCores || argv[3]~= nMemoria
int main(int argc, char *argv[])
{
if(argc!=4){ //Un control de error para los argumentos pasados por la consola

printf("ERROR_ENTER:\n./file.c Filename nCores RAM\n");
return 0;
}

sthread t[NUM_THREADS]; //array de NUM_THREADS elementos de tipo structhreads
//pthread_attr_t attr;
//pthread_attr_init(&attr);
//pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); //incluye la creación del proceso como DEPENDIENTE (JOINABLE)
int i;

int T_cores = atoi(argv[2]);
int T_memory = atoi(argv[3]);
char *file = argv[1];

printf("\n ##############-!MAIN!-##############");
printf("\n RECURSO_CORE:%d\n", T_cores);
printf("\n RECURSO_MEMORIA:%d\n", T_memory);
printf("\n ARCHIVO_COMANDOS:%s\n", T_file);
printf("\n ##############-!MAIN!-##############\n");
//CONDICION MUTEX DE ESPERA
Inicializar(file,t[NUM_THREADS]); // el nombre de un array es un puntero a la primera posición de memoria de un array
//CONDICION SIGNAL

int tata=sizeof(T_file);
printf("%d\n", tata);
return 0;
}//FREE TPB!!

Buenas People!!

Os comento, es el principio de un ejercicio de threads donde hayq ue pasarle el nombre de un archivo para lohabra lo lea sace unos comandos en bash que hay dentro y los ejecute....

El FILE se le pasa por el argv[1] el que lo pasamos a una variable char y lo enviamos a la funcion inicializa(...)

Pero no funciona, de hecho con el printf() en la funcion por consola salen caracteres raros (conclusion.. no lee el char)

¿QUE OPINAN?
Paz.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Problemas pasando por referencia un char...
« Respuesta #1 en: 20 Diciembre 2014, 22:47 pm »

Será char*, no char, en el argumento 'file' de Inicializar.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines