Hay un total de 745 Preguntas. | << >> |
Pregunta: | 56318 - CONSEGUIR VALOR DE RETORNO DE GETCH() |
Autor: | itzi mr |
Estoy escribiendo un programa en C que tiene que recoger unos caracteres sin necesidad de pulsar el enter, por lo que se me obliga a usar getch().Como la cantidad de caracteres no es fija y tengo q leer todos los caracteres, necesito hacer un bucle hasta leer el ultimo de ellos.
Si continuo leyendo con getch una vez que no quedan caracteres en el buffer, el programa se queda esperando porque getch es una funcion bloqueante. Necesitaria una funcion del estilo de nodelay (que deshabilita el caracter bloqueante de la funcion)en Unix pero para Windows Xp, o algun bucle que me leyese los datos hasta el final sin que el programa se quedase runeando. Gracias. |
Respuesta: | eider mauricio aristizabal erazo |
no te entendi muy bien pero creo que te serviria utilizar un ciclo con la funcion kbhit()
http://www.conclase.net/c/Borland/funcion.php?fun=kbhit bye |
Pregunta: | 56496 - COMO PASAR UN INT A CHAR EN C (UNIX) |
Autor: | Juan |
Hola a todos,
soy nuevo en esto de la programacion. Estoy intentando recoger un numero de un archivo que capturo con un fscanf y lo asigno a una variable int. Esta variable la opero y el resultado necesito guardarlo como char. El problema que tengo es que no consigo hacer el cast de ninguna manera char linealeida[1]; int i; en un while con la instrucción (fscanf(arxivoentrada, "%i", &linea) voy recogiendo sin problemas todas las lineas, hasta aquí ningun problema el problema es que despues de operarlo sumandole o restandole algo, intento hacer esto: lineafinal = scanf("%s", &linea); o directamente lineafinal = (char*) linea; y me dice al compilarlo tipos incompatibles de asignacion. Podeis ayudarme? Gracias por adelantado |
Respuesta: | nayumi orama |
Tienes varios errores de concepto.
En tu variable char linealeida[1] estás reservando espacio para un sólo caracter, por lo que sólo podrás guardar valores de 0 a 9, y luego no podras utilizar la libreria estandar de manejo de cadenas de caracteres al faltarte el caracter de fin de cadena . En este caso, necesitas un sprintf |
Pregunta: | 56537 - COMO HACER UNA FUNCIÓN RECURSIVA? |
Autor: | Juan Reyes |
Saludos, mi problema es que la función tiene que leer un número y volterlo ej. si entro 123 que devuelva 321. |
Respuesta: | Alberto Ramón Márquez |
Buenas,
he realizado recursivamente ese ejercicio. Lo he compilado en windows con Devc++ y aquí tienes el código: // Voltear número recursivamente // @author Alberto Ramón Márquez #include <iostream> using namespace std; int VoltearNumero(int n){ // Caso base, cuando n es igual a cero // Como no debe de hacer nada en el caso base se omite if( n != 0){ // Mostrar última cifra cout << n%10; // Llamamos de nuevo a la función recursiva con una cifra menos VoltearNumero(n/10); } } // Lo probamos int main(){ int n; cout << "Introduce numero a voltear: "; cin >> n; cout << "Numero volteado: "; VoltearNumero(n); cout << endl; system("pause"); } |
Pregunta: | 56964 - DEV C++ BUSCO INSTRUCCION PARA CONTROLAR PUERTOS |
Autor: | Juan Pablo Candia |
hola amigos, estoy buscando la instruccion en c++ para controlar los puertos serie, esta la de bioscom, pero la probe y no funciono, y me dijeron por que esa instruccin solo funciona en ms dos, pero que si existe una instruccion pare correrlo desde windows, espero que ustedes sepan cual es.
por favor ayudenme |
Respuesta: | Marcos Sanchez |
Si utilizas Windows XP, es posible que tengas problemas, ya que el mismo sistema, bloquea los puertos, existen algunos programas que desbloquean los puertos, pero en realidad no conozco ninguno que sea "confiable", pero busca y encontrarás.
Con respecto a la función bioscom solo puede pasar un caracter por vez cada vez que se la llama, no una cadena de caracteres por cada vez que se la llama, esta función se utiliza para enviar caracteres de control al puerto serie. Si lo que quieres es enviar caracteres por el puerto serie puedes usar la función outportb: Sintaxis: void outportb(int portid, unsigned char value); También hay funciones de controles de puertos en la librería "conio.h" pero nuevamente te digo NO SE SI TE FUNCIONARÁ BIEN EN XP. Bueno espero que esto pueda ayudarte de algo, saludos! |
Pregunta: | 57573 - INTERRUPCIONES EN C PARA LEER ESPACIO LIBRE EN DISCO DURO Y |
Autor: | Francisco Vasquez |
Hola me dirijo atentamente a ustedes por un codigo fuente que estoy buscando que determina crear un programa que permita ver el espacio libre en la unidad C y el espacio total en la unidad C usando C.
De Antemano Muchas Gracias |
Respuesta: | rodrigo nannig |
tienes que usar las funciones GetDiskFreeSpace y GetDiskFreeSpaceEx,
existen otras funciones de la mano de estas como, GetLogicalDriveStrings, que devuelve las unidades de tu pc GetVolumeInformation, tipo de formato - nombre del disco y algo mas Aqui te envio unos links que te podrian ser de utilidad http://support.microsoft.com/kb/231497/es http://www.todoexpertos.com/categorias/ciencias-e-ingenieria/ingenieria-informatica/respuestas/545142/c-y-las-api-de-windows |
Pregunta: | 57968 - TEMPORIZADORES EN C: |
Autor: | leticia gab |
Buenas, tengo que implementar un programa en lenguaje C. Que maneje 2 temporizadoes; osea que cada 10seg. imprima una cosa y cada 14 seg. otra. Y los 2 temporizadores NO arrancan al mismo tiempo.
Se alguien sabe como empezar lo agradecería porque yo no tengo idea saludos y gracias leticia |
Respuesta: | Omar Sandoval |
eso se hace con sleep saludos. |
Pregunta: | 58228 - RESERVAR MEMORIA EN TURBO C++ |
Autor: | Pajaro Osella |
tengo un problema programando en turbo c++. tengo las siguientes lineas:
unsigned char *memoria; .. .. .. memoria=(unsigned char *)malloc(65536) if(!memoria){ printf("No se puedo reservar tanta memoria"); getch(); exit(1); } lo q estoy intentando hacer es reservar un bloque de 64 kb de memoria, pero cuando lo ejecuto el programa, memomira me devuelve NULL debido a q no pudo reservarse tanta memoria. por que pasa esto!??!?!? supongo que el error debe estar en la configuracion del compilador. estoy trabajando con un modelo de programa standard y 64 kb de heap. por favor si alguien puede ayudarme se lo agradeceria eternamente! |
Respuesta: | Francisco Rogles |
Supongo que se trata de una version para DOS. Si es asi, el problema es que, con un heap de 64 Kb, no puedes reservar un bloque de 64 Kb de memoria, ya que estarias intentando coger todo el heap. Ademas, probablemente el argumento para malloc (el numero de bytes que quieres reservar) sea un numero entero de 16 bits, el cual puede tomar valores de 0 a 65535. Si utilizas 65536, has provovado un desbordamiento de entero, con lo cual te ha cogido el valor cero y, logicamente, al intentar reservar 0 bytes te devuelve NULL.
Te sugiero las siguientes comprobaciones: 1. Utiliza el modelo HUGE de memoria. Este modelo permite reservar bloques de memoria de mas de 64 Kb (pero el tamaño de cada elemento debe ser una potencia de 2). 2. No recuerdo si era Turbo C o Microsoft C, uno de ellos (o los dos, hace mucho que no trabajo con DOS) tenian funciones especiales para manejar la memoria en bloques grandes. Comprueba en la ayuda de tu compilador si tienes una funcion llamada halloc, o xalloc (o algo parecido). Si es asi, probablemente podras saltarte los puntos restantes. 3. Comprueba el tamaño del tipo (unsigned int) de tu compilador. Utiliza el operador sizeof(int). Para Turbo C++, probablemente sera 2 bytes (16 bits). 4. Si el tamaño del tipo int de tu compilador es de 2 bytes (16 bits), para reservar bloques de mas de 64 Kb no podras utilizar la funcion malloc. Utiliza en su lugar la funcion calloc, su prototipo es void *calloc(int num_elementos, int tamano_elemento); Te reserva espacio para num_elementos, cada uno de tamano_elemento (ademas, todos iniciados a cero). Recuerda que, con el modelo HUGE y si el bloque resultante es de mas de 64 Kb, tamano_elemento debe ser una potencia de 2 (2, 4, 8, 16, etc). Espero que te sirva de ayuda. Saludos, PACO |
Respuesta: | miguel bedolla |
intenta con:
unsigned *char memoria=new char[8192] ' Es el equivalente en bits o intenta esto typedef *char string; string *memoria= new string de esta manera declaras una variable string y no tienes limite de caracteres |
Pregunta: | 59018 - BLOAQUEAR TECLAS EN C++ |
Autor: | Julio Verdugo |
Hola que tal,
Como puedo bloquear cualquier tecla en c++? la tecla que yo desee. Estoy haciendo un programa y quiero que solo esten activadas las teclas de numeros y las de letras no, o al reves que solo se activen las de caracteres y las de numeros no. el punto es que quiero saber como se hace para bloquear cualquier tecla Gracias |
Respuesta: | Luis Mansilla |
Bueno para poder bloquear teclas debes crear un evento que se llama KeyPress... por ejemplo si quieres bloquear teclas de manera que solo te salgan numeros entonces selecciona tu Edit y entra al evento KeyPress y ahi adentro tendras que poner el siguiente codigo:
if (((Key<'0')||(Key>'9'))&&(Key!=8)) { Key=0; } la idea de este codigo es que si entra al if, entonces te bloquea la tecla gracias a la sentencia Key=0; se leería asi... "SI el codigo ascii de la tecla que aprete esta fuera del codigo ascii de cero o fuera del codigo ascii de nueve (eso quiere decir que no es un numero ) Y tambien cumple que el codigo ascii es diferente de 8 (ascii = 8 es la tecla de borrado o backspace) entonces ignora lo que se presionó" suerte. Luis Mansilla |
Pregunta: | 59268 - ¿ICONO DEL EJECUTABLDE DE UN PROGRAMA EN C? |
Autor: | Victor Alfonso PInedo Martinez |
La preguta es esta:
¿ Como hago para crear un icono ejecutable de un programa hecho en C. Yo utilizo el compilador Borland C++ 3.1 ? trabako en el sistema operativo Windows. |
Respuesta: | Eliezer Fernandez |
No entiendo lo de "icono ejecutable".. hablas de compilar el programa?? osea que el código que tiendes en C genere un archivo ejecutable?? |
Pregunta: | 59522 - GETS Y PUTS EN VISUAL C |
Autor: | javi sanchez |
Hola,
me estoy volviendo loco, tengo una cadena de caracteres que quiero coger mediante gets pero no me funciona. he intentado lo siguiente 1º declararlo como char *nombre y hacer gets(nombre); y hay me dice que no he iniciado "nombre", si lo inicio tampoco me deja hacer nada, asi que estoy en las mismas 2º declararlo como char nombre[15] y hacer gets(nombre); en ese caso no me lee nada y pasa al siguiente paso que hago mal?? utilizo el visual c++ 2005 |
Respuesta: | Antxon Urrutia |
Hola, ¿Antes de hacer el gets recoges algun otro dato? Puede que se te haya quedado algun INTRO en el buffer y por eso se lo salte, prueba a hacer fflush(stdin); antes del gets. Yo utilizo el Dev-C++ y la segunda que forma que dices deveria funcionar, a mi al menos me va con lo siguiente:
#include <stdio.h> main() { char cadena[15]; gets(cadena); puts(cadena); getch(); } Buena suerte! |
|< << 65 66 67 68 69 70 71 72 73 74 75 >> >| |