C/Visual C - Ayuda - Funcionalidad

 
Vista:
Imágen de perfil de Miguel Ángel
Val: 2
Ha aumentado su posición en 24 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Ayuda - Funcionalidad

Publicado por Miguel Ángel (2 intervenciones) el 08/05/2019 23:03:57
Hola a todos,

tengo un código en C, el cual tengo que intentar averigar posibles utilidades. Creo que lo entiendo, pero sinceramente no le veo mucha utilidad.

Lo que creo que hace es concatenar las letras de una cadena de caracteres y separarlas por un espacio. Pero yo me pregunto, que sentido tiene eso?

He de aclarar, que estoy empezando con C, no soy ningún experto. Si alguien me puede ayudar a aclarar mi duda se lo agradecería muchísimo.

--------------------------------------------- Aquí el código: --------------------------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
 
#include "rutines.h"
 
int main(int argc, char *argv[])
{
	char cmd[256];
	int a;
 
	if (argc<2)
		Error("Insufficient arguments: exec_in <sec> <cmd> [args...]");
 
	sleep(atoi(argv[1]));
 
	cmd[0]='\0';
	for(a=2;a<argc;a++)
	{
		strcat(cmd,argv[a]);
		strcat(cmd," ");
	}
 
	system(cmd);
 
	exit(0);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 13
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Ayuda - Funcionalidad

Publicado por script_code (7 intervenciones) el 10/05/2019 04:24:41
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int main(int argc, char *argv[])
{
 
	char cmd[256];  // declara una cadena de 256 caracteres
 
	int a;  // declara un entero
 
 
 
	if (argc<2)
 
		Error("Insufficient arguments: exec_in <sec> <cmd> [args...]");  // comprueba que haya al menos un argumento ingresado por linea de
                                                                               // comandos ya que el primer argumento (argv[0])es el nombre del  programa
	sleep(atoi(argv[1]));    //duerme el tiempo indicado en argv[1], previamente hace un cast de string a a integer
 
 
 
	cmd[0]='\0';  // curioso. Declara que el primer elemento del array es el fin del string por lo que no concatenará un string a cmd[256]
 
	for(a=2;a<argc;a++)  // este bucle nunca se ejecutará ya que a nunca es < argc. argc vale como minimo 2 puesto que está siendo
                                // filtrado por el if ....if (argc<2)
 
	{
 
		strcat(cmd,argv[a]);
 
		strcat(cmd," ");
 
	}
 
 
 
	system(cmd);  // ejecuta un comando del S.O
 
 
	exit(0);  // devuelve el control al S.O

por lo tanto este codigo lo que hace es esperar n segundos (indicados en argv[1] y si argv[1] es una cadena de numeros) y luego terminar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar