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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Duda C] Como añadir variable a la función system()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Duda C] Como añadir variable a la función system()  (Leído 9,101 veces)
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
[Duda C] Como añadir variable a la función system()
« en: 2 Julio 2012, 17:42 pm »

Estoy tratando de hacer un simple código que te pida cuantas veces quieres crear un carpeta en C:// y posteriormente estas se creen con nombres aleatorios pero salta un problema.

Código:
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

main(){

int num,cifra;
char azar[] = "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z";

srand (time(NULL));   
azar=rand();

printf("Veces a abrir:\t");
scanf("%i",&cifra);

for(num=0;num<=cifra;num++)
system("mkdir c:\\%d",azar);
getchar();

}

Sé que no está bien meter la variable azar dentro de la función system(); ya que da error pero no se me ocurre como podría hacerlo.


En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Duda C] Como añadir variable a la función system()
« Respuesta #1 en: 2 Julio 2012, 18:18 pm »

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5. //windows.h no hace falta.
  6.  
  7. int main(){
  8. int random, cifra;
  9. char azar[]= "abcdefghijklmnñopqrstuvwxyz";
  10. srand(time(NULL));
  11. char mkdir[10]="mkdir C:\\";
  12. printf("Veces a abrir:\t");
  13. scanf("i", &cifra);
  14. for(int i=0; i<cifra; i++){
  15. random=rand()%26+0;//maximo+minimo
  16. mkdir[10] = azar[random];
  17. system(mkdir);
  18. }return 0;
  19. }
  20.  
  21.  
  22.  
Mira a ver si funciona, puede que haya que cambiar algunas cosas.
Saludos.


« Última modificación: 2 Julio 2012, 18:53 pm por daniyo » En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: [Duda C] Como añadir variable a la función system()
« Respuesta #2 en: 2 Julio 2012, 18:27 pm »

EDITO 2:

Sí, al final creo que estaba bien lo que dije antes.

Daniyo, en strcat(), el segundo parámetro debe ser una cadena de caracteres (char*), no un solo carácter(char), ya que el prototipo es:

char *strcat(char*s1, const char *s2);

Para solucionarlo puedes obtener la longitud de la primera cadena con strlen() y meter el carácter que quieras en esa posición.

Saludos.
« Última modificación: 2 Julio 2012, 18:44 pm por DickGumshoe » En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Duda C] Como añadir variable a la función system()
« Respuesta #3 en: 2 Julio 2012, 18:50 pm »

Cierto, y ahora que lo dices en el rand() deberia haberle puesto 26 + 0, ya que los subindices empiezan en cero. Ahora lo edito.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
Re: [Duda C] Como añadir variable a la función system()
« Respuesta #4 en: 2 Julio 2012, 19:15 pm »

Oye daniyo está estupendo el código, me ha sorprendido lo de system(mkdir); ya que no sabía que se pudiese añadir a la funcion system() una variable así directamente. Además está perfectamente enlazado, siempre me dan problemas las uniones  :-\.

DickGumshoe llevabas razón, también se podría hacer cambiando lo de concatenar funciones por midiendo su longitud, aunque así lo veo bastante bien.

Que alegría me dais compañeros  ;-)
En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Duda C] Como añadir variable a la función system()
« Respuesta #5 en: 2 Julio 2012, 19:35 pm »

El caso es que yo no lo he probado, ¿funciona?.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
Re: [Duda C] Como añadir variable a la función system()
« Respuesta #6 en: 2 Julio 2012, 19:56 pm »

En principio sí, y digo principio porque a veces, bastante a menudo, salta un mensaje de acceso denegado...esta bien estructurado y todo pero no se, a ver si consigo solucionarlo.

Estoy andando a ver si consigo sacarlo concatenando funciones, es decir, hacerlo con strcat pero me cuesta porque para hacerlo con esta funcion es necesario 2 variables tipo char(cadena)... las 2 serian mkdir y una sola que una azar[random].

El caso es que azar y random no son ambas variables char porque random es variable integer...pues a ver si consigo tener las 2 variables char y ya os digo.
En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
Fire544

Desconectado Desconectado

Mensajes: 85


"Escucha el sonido del 0, 1"


Ver Perfil WWW
Re: [Duda C] Como añadir variable a la función system()
« Respuesta #7 en: 2 Julio 2012, 22:38 pm »

Hola !! intenta concatenar con strcat lo que tienes que hacer es meter en una variable char [] como origen y otra como destino del mismo tipo, pero tendrias que tomar en cuenta el final de cada cadena me explico.

Código
  1. /*si te fijas al final de la cadena hay un espacio, esto es para poder meter la cadena al final de la linea + un espacio*/
  2. char cadenaOrigen[]="mkdir C:\\ "
  3. //declaramos variable destino
  4. char datosIngresados[5];
  5. //esperamos datos
  6. fgets(datosIngresados, 5, stdin);
  7. //concatenara datosIngresado en cadenaOrigen y sabiendo que cadena origen tiene el comando mkdir mas un espacio para respetar la sintaxis de windows.
  8. strcat(cadenaOrigen, datosIngresados);
  9. //llamamos a system con la llamada al sistema alojada en cadenaOrigen
  10. system(cadenaOrigen);
  11.  

Para lo de meter un entero aleatorio a una cadena puedes hacer casteo explicito mira.

Código
  1. char cadena[]="mkdir ", ingresaDatos[5], val;
  2. int var_rand=0;
  3.  
  4. srand(time(NULL));
  5. //pedimos datos al usuario
  6. scanf("%i", &val);
  7.  
  8. for(int i=0; i<val; i++)
  9. {
  10. var_rand = rand() % 25 + 0;
  11. //casteo de entero a char
  12. strcat(cadena, (char*)var_rand);
  13. system(cadena);
  14. }
  15.  
« Última modificación: 2 Julio 2012, 23:13 pm por Fire544 » En línea

"Si enseñas a pezcar a un niño lo ayudas para toda la vida, si pezcas para alimentarlo lo ayudas por un momento".
durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: [Duda C] Como añadir variable a la función system()
« Respuesta #8 en: 3 Julio 2012, 00:08 am »

Citar
El caso es que azar y random no son ambas variables char porque random es variable integer...pues a ver si consigo tener las 2 variables char y ya os digo.

Hola! busca sprintf


Saludos
En línea

Ahorrate una pregunta, lee el man
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Duda C] Como añadir variable a la función system()
« Respuesta #9 en: 3 Julio 2012, 00:42 am »


Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. char *readLine(FILE *file) {
  6.    char *line = (char*)malloc(1);
  7.    size_t size = 0;
  8.  
  9.    while ((line[size] = getchar()) != '\n')
  10.        line = (char*)realloc(line, ++size + 1);
  11.  
  12.    line[size] = '\0';
  13.  
  14.    return line;
  15. }
  16.  
  17. int main() {     // ==============
  18.    char cmd[512];
  19.    char *path; //  MAX_PATH = 256
  20.  
  21.    puts("Ruta a crear");
  22.    path = readLine(stdin); //  leemos una linea desde el buffer de entrada del teclado
  23.    sprintf(cmd, "mkdir \"%s\"", path); //  construimos la cadena por ejemplo: mkdir "c:\Hola Mundo desde C-ANSI"
  24.    system(cmd);    //  Ejecutamos.
  25.  
  26.    free(path);
  27.    getchar();
  28.    return EXIT_SUCCESS;
  29. }
  30.  
  31.  

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

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