Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola, quisiera que me recomendarais algun programa, gratuito si es posible, para compilar y programar en c, y saber si se puede hacer programas en c, que ademas de escribir texto en pantalla pueda manejar graficos, crear entorno grafico propio y similares (como los entornos graficos de un videojuego) y como se puede programar que se muestren imagenes en pantalla con c. Igualmente agradeceria cualquier referencia a manuales lo mas completos posibles sobre programacion en c, preferiblemente en castellano.
Gracias por cualquier ayuda que me podais ofrecer.
El poner n tras %s no a resuelto del todo el problema, ahora tras escribir la cadena pasa a una nueva linea donde lee otra cadena, usa la primera para asignarla a la variable nombre y la segunda que lee la usa para decidir si ejecutar otra vez el bucle o no, muestra lo que se imprime en pantalla tras scanf y o vuelve a ejecutar el bucle o cierra el programa.
Lo que intento es con scanf leer la cadena y asignarla a la variable nombre y despues de imprimir en pantalla que lea un caracter, pulsado simplemente sin tener que escribir el final de linia tras el caracter.#include <stdio>
#include <conio>
main() {
int e = 1 ;
char nombre[10];
while(e == 1) {
printf("Primer programa en CnnEscribe tu nombre:n");
scanf("%sn", nombre);
printf("nHola %s", nombre);
printf("nPulse s para salir del programa o cualquier otra tecla para continuar.nn");
if('s' == getchar()) {
e = 0 ;
}
}
return 0;
}
¿por que lee la cadena y el caracter a la vez antes de ejecutar los prinft que hay por medio, y por que getchar lee el caracter como scanf una cadena y espera un final de linea en vez de leer un solo caracter pulsado, sin pulsar enter, despues de ejecutar los prinft?
Quisiera tambien aprovechar para preguntar si alguien sabe como se puede cambiar el icono del programa, al compilarlo aparece el ejecutable .exe con un icono de una ventana con fondo blanco y quisiera poder cambiarselo ya sea desde el propio programa añadiendo algun codigo o desde el compilador seleccionando alguna opcion del compilador o similar para cambiarle el icono por otro.
El compilador que estoi usando es Dev-C++ 4.9.9.2 por si el icono se cambia desde el compilador.
la última, usa también scanf(%c) en vez de getchar y mete detrás de los scanf y cosas así del teclado fflush(stdin) [creo que era así] para vaciar el teclado y evitar problemas raros.
Lo del icono es fácil, yo he estado en el mundo del hackeo, así que te podría decir varios programas 🙄
Por ejemplo ipacker tool es un joiner, pero también te cambia el icono de tu .exe
o "estasfodido" es un encriptador que también lo hace.
Existen programas que sólo cambian el icono... pero no los utilicé ya que no me hacían falta 8) , aún así, están muy orientados al mundo del hackeo.
PS: Un joiner es para unir tu .exe a otro archivo. Si no quieres simplemente puedes meter tu .exe y ya está, se utiliza para engañar y adjuntar una foto, un .doc, un .pdf..., la víctima verá la foto y detrás se le ejecutará nuestro código 😈
El encriptador es usado para que los antivirus no detecten el troyano y para proteger el código y hacerlo antidebugger, vamos, que no te lo puedan copiar.
Acostumbrate a que main retorne int, primero por vistas al futuro (tiene aplicaciones), y segundo porque estas retornando 0 y si no no tiene sentido.
Prueba quitando el n del format string del scanf y poniendo un getchar() adicional para que se trague el retorno de carro antes de hacer el getchar que lees de verdad. Te pego el código.
#include <stdio>
int main(void) {
int e = 1;
char nombre[10];
while (e == 1) {
printf("Primer programa en CnnEscribe tu nombre:n");
scanf("%s", nombre);
getchar();
printf("nHola %s", nombre);
printf("nPulse s para salir del programa o cualquier otra tecla para continuar.nn");
if ('s' == getchar()) {
e = 0;
}
}
return 0;
}
he probado usar un scanf al final tambien pero tampoco soluciona el problema. Ahora nisiquiera lee el segundo scanf:#include <stdio>
#include <conio>
main() {
int e = 1 ;
char nombre[10];
while(e == 1) {
printf("Primer programa en CnnEscribe tu nombre: ");
scanf("%sn", &nombre);
printf("nHola %s", nombre);
printf("nPulse 0 para salir del programa o cualquier 1 para continuar.nn");
scanf("&dn", &e);
}
return 0;
}
he editado mi mensaje... además, como lo tienes debería de salir bien.
Yo el main suelo poner como:
void main() y así quito el return, pero vamos, eso son manías de cada uno. prueba a limpiar el buffer del teclado, es lo único que se me ocurre (con lo de fflush).
ah! coño ahora lo veo!!
es scanf("%s", &nombre); quita esa /n... no sé para qué la metes... ains, hace mucho que no programo igual se me va la cabeza 😉