• Sábado 14 de Diciembre de 2024, 11:41

Autor Tema:  [Problema] Imprimir un carácter escaneado en pantalla  (Leído 1932 veces)

DanielFB93

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
[Problema] Imprimir un carácter escaneado en pantalla
« en: Domingo 22 de Enero de 2012, 15:58 »
0
Buenas tardes, me he inscrito en este foro porque estoy en pleno proceso de iniciación al mundo de la programación, tal y como pueden ver en C. Pues bien, en uno de los ejercicios que realizo me he quedado trabado; es el siguiente:
Citar
Escribe una función naturales que imprima los n primeros números naturales, cada uno en una línea, y junto a cada uno de ellos un número de caracteres similar, donde dicho carácter viene determinado por un parámetro c. Por ejemplo, si n=5 y c=’*’, la función escribe:
1 *
2 **
3 ***
4 ****
5 *****
Escribe también un programa, utilizando dicha función, que pida al usuario n y c y escriba por pantalla el resultado.

El código que encuentran a continuación es lo que he escrito. El problema se produce después de haber introducido el número y presionado intro, pues no me deja introducir el carácter que quiera, deja un gran espacio en blanco y ahí se queda.

Código: [Seleccionar]
#include <stdio.h>

void naturales (int n, char c);

void naturales (int n, char c){

int count, count2;

for(count=1; count<=n; count++){
printf("%d ", count);
for(count2=1; count2<=count; count2++){
printf("%c", c);
}
printf("\n");
}
}

int main(){

int numero;
char symbol;

printf("Introduzca un numero: ");
scanf("%d",&numero);
printf("Introduzca un caracter: ");
scanf("%c",&symbol);
fflush(stdin);

printf("\n");

naturales(numero, symbol);

return 0;
}


Posiblemente haya un error estúpido, pero no doy con él. Espero que puedan ayudarme.

Saludos, y gracias de antemano.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:[Problema] Imprimir un carácter escaneado en pantalla
« Respuesta #1 en: Domingo 22 de Enero de 2012, 23:29 »
0
El problema esta con scanf("%c",&symbol);, en algunas ocasiones scanf no funciona de manera adecuada, y ese es el problema al tratar de leer un caracter con scanf, lo mejor es utilizar fgets(), ademas necesitas limpiar el buffer con getchar() para que no te acarree porblemas, te dejo el codigo modificado para que te des una idea de como debe ser.

Código: [Seleccionar]
#include <cstdio>

void naturales (int n, char c[]);

void naturales (int n, char c[]){

int count, count2;

for(count=1; count<=n; count++){
printf("%d ", count);
for(count2=1; count2<=count; count2++){
printf("%c", c[0]);
}
printf("\n");
}
}

int main(){

int numero;
    // Leeremos el caracter como si fuera cadena,
    // ya que fgets agrega el caracter nulo
    // despues de leer.
char symbol[2];

printf("Introduzca un numero: ");
scanf("%d",&numero);
    // Limpiar el buffer despues de usar scanf
    // para que fgets funcione de manera correcta
    while (getchar() != '\n');
printf("Introduzca un caracter: ");
    fgets(symbol, 2, stdin);
//scanf("%c",&symbol);
//fflush(stdin);

printf("\n");

naturales(numero, symbol);

return 0;
}

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

DanielFB93

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re:[Problema] Imprimir un carácter escaneado en pantalla
« Respuesta #2 en: Lunes 23 de Enero de 2012, 19:47 »
0
Muchísimas gracias por solucionarlo, tenía este mismo problema en muchos programas de tareas similares y ahora ya lo he podido arreglar.

De nuevo, muchas gracias  :jumpie: