|
Mostrar Mensajes
|
Páginas: 1 [2] 3 4
|
11
|
Programación / Programación C/C++ / Re: Comunicación USB con Android
|
en: 30 Junio 2017, 17:37 pm
|
No he tenido experiencia con Android pero si un poco con Java te recomiendo comenzar con java que es el lenguaje que se usa para Android estudio, es claro que es un lenguaje orientado a objetos y conocer algún método de arquitectura de sotware el más básico bastará.
|
|
|
12
|
Programación / Programación C/C++ / Re: Comunicación USB con Android
|
en: 30 Junio 2017, 04:12 am
|
Solo podria orientarte en la parte del host, podrias crear una aplicacion que se base en libusb para reconocer tu celular y realizar transferencias de tipo control, interrupcion o bulk. En la parte del celular si que nose como java y android manejaran la recepción usb. Pero por que hacer esto por cable USB con una aplicación que use internet sería mas facil de hacer, o bluethoot.
|
|
|
13
|
Programación / Programación C/C++ / Re: ayuda con vectores
|
en: 30 Junio 2017, 03:59 am
|
Umm con un break bastara, no lo he probado pero debe funcionar, ni lo he compilado. #include <stdio.h> #include <stdlib.h> #define LENGTH 1001 int num[LENGTH]; int main() { int dato; while(1) { printf("Intoduzaca numero= "); if(dato==-1 || dato>=LEGTH) break; //salgo del while infinito y no imprimo nada el programa termina ++num[dato]; printf("El numero %d ha sido introducido %d", dato , num [dato ]); } return EXIT_SUCCESS; }
|
|
|
14
|
Programación / Programación C/C++ / Re: ayuda con vectores
|
en: 29 Junio 2017, 22:06 pm
|
#include <stdio.h> #include <stdlib.h> #define LENGTH 1001 int num[LENGTH]; int main() { for(int dato=0 ; dato!=-1 && dato<LENGTH; ) { printf("Intoduzaca numero= "); ++num[dato]; printf("El numero %d ha sido introducido %d", dato , num [dato ]); } return EXIT_SUCCESS; }
No entiendo el porque de la ultima parte del numero mil
|
|
|
18
|
Programación / Programación C/C++ / Re: Manejo de e/s stdin/stdout y ficheros
|
en: 28 Abril 2017, 05:11 am
|
Hola te puedo hablar es desde linux y de c no de c++ y lo que te voy a decir te va a conducir a otra pregunta de como funciona, pero vas a estar mas cerca aunque la respuesta no es tan trivial se necesita tiempo para comprer como funciona. printf() es la funcion de impresión en patalla de c, pero printf es una mascara por asi decirlo de una función del kernel de linux system call llamada write() que opera a bajo nivel Si tomas un programa en c #include <stdio.h> int main(void) { printf("hello"); return 0; }
Lo compilas, abres la consola gcc -Wall -o hello hello.c y luego ejecutas Impresionado? execve("./book", ["./book"], [/* 48 vars */]) = 0 brk(NULL) = 0x1640000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd227e03000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=162022, ...}) = 0 mmap(NULL, 162022, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd227ddb000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\t\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1864888, ...}) = 0 mmap(NULL, 3967392, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd227817000 mprotect(0x7fd2279d6000, 2097152, PROT_NONE) = 0 mmap(0x7fd227bd6000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bf000) = 0x7fd227bd6000 mmap(0x7fd227bdc000, 14752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd227bdc000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd227dda000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd227dd9000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd227dd8000 arch_prctl(ARCH_SET_FS, 0x7fd227dd9700) = 0 mprotect(0x7fd227bd6000, 16384, PROT_READ) = 0 mprotect(0x600000, 4096, PROT_READ) = 0 mprotect(0x7fd227e05000, 4096, PROT_READ) = 0 munmap(0x7fd227ddb000, 162022) = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0 brk(NULL) = 0x1640000 brk(0x1661000) = 0x1661000 write(1, "hello", 5hello) = 5 exit_group(0) = ? +++ exited with 0 +++
Todo eso son system calls del kernel de linux, mira esta linea write(1, "hello", 5hello) = 5 Hasta aquí llego yo no he tenido el tiempo para saber como esta construido el kernel de linux, pero parece ser complicado. Se que no he respondido a totalidad tu pregunta, pero hasta ahora yo solo hago aplicaciones de usuarios, tu proyecto parece ser muy ambicioso, al indagar mas a fondo te vas a encontrar cosas que requerirán mucho tiempo de análisis y estudio, mejor comenzar por algo suave y con el tiempo ir hacia aguas mas profundas. Esto quiere decir que c esta corriendo encima de todo esto, el kernel. Y por asi decirlo el Kernel esta construido en su propia version de c diferente, con funciones llamdas diferentes al ANSI C pero de comportamiento similar como son prinftk en ves de printf okmalloc en vez de malloc y asi otras mas.
|
|
|
19
|
Programación / Programación C/C++ / Por que este programa corre bien de esta forma y no de esta otra C
|
en: 28 Abril 2017, 04:44 am
|
En un ejercicio debo encontrar un patrón de un arreglo desde la derecha hacia la izquierda de otro arreglo. Tengo la funcion get_line para obtener la linea a comparar con el patrón y la funbcion strindex para buscar el patron. En la función strindex, en el segundo ciclo for al colocar una coma ; como bloque de ese ciclo, osea el bloque no ejecuta nada solo verifica la condición y decrementa las variables, me da un error extraño al usar el debug de Codeblocks las variables a la segunda vez que se llama a ese for toman valores extraños, solo a la segunda vez. Les dejo la función que sirve, pero no entiendo porque la otra versión del código no sirve. Version que sirve#include <stdio.h> #include <string.h> #define MAXLINE 1000 /* maximum input line length */
int get_line(char line[], int max); int strindex(char source[], char searchfor[]); char pattern[] = "program"; /* pattern to search for */
/* find all lines matching pattern */ int main() { char line[MAXLINE]; int found = 0;
while (get_line(line, MAXLINE) > 0) if (strindex(line, pattern) >= 0) { printf("%s", line); found++; } return found; }
/* getline: get line into s, return length */ int get_line(char s[], int lim) { int c, i; i = 0; while (--lim > 0 && (c=getchar()) != EOF && c != '\n') s[i++] = c; if (c == '\n') s[i++] = c; s[i] = '\0'; return i; }
/* strindex: return index of t in s, -1 if none */ int strindex(char s[], char t[]) { int i, j, k;
for (i = strlen(s)-1; i>=0; i--) { for (j=i, k=strlen(t)-1; s[j]==t[k]; j--, k--) if (k == 0 ) return i; }
return -1; }
Version que no sirve fijense en como cambie en strindex el bloque del sgundo for por un punto y coma, el programa compila bien, deberia funcionar#include <stdio.h> #include <string.h> #define MAXLINE 1000 /* maximum input line length */
int get_line(char line[], int max); int strindex(char source[], char searchfor[]); char pattern[] = "program"; /* pattern to search for */
/* find all lines matching pattern */ int main() { char line[MAXLINE]; int found = 0;
while (get_line(line, MAXLINE) > 0) if (strindex(line, pattern) >= 0) { printf("%s", line); found++; } return found; }
/* getline: get line into s, return length */ int get_line(char s[], int lim) { int c, i; i = 0; while (--lim > 0 && (c=getchar()) != EOF && c != '\n') s[i++] = c; if (c == '\n') s[i++] = c; s[i] = '\0'; return i; }
/* strindex: return index of t in s, -1 if none */ int strindex(char s[], char t[]) { int i, j, k;
for (i = strlen(s)-1; i>=0; i--) { for (j=i, k=strlen(t)-1; s[j]==t[k]; j--, k--) ; if (k == 0 ) return i; }
return -1; }
|
|
|
|
|
|
|