Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema SCANF

Estas en el tema de Problema SCANF en el foro de C/C++ en Foros del Web. Hola chicos, bueno espero puedan ayudarme, tengo un problema y es que los scanf no me los lee consecutivamente, no me da error, al momento ...
  #1 (permalink)  
Antiguo 01/07/2010, 22:19
 
Fecha de Ingreso: julio-2010
Mensajes: 4
Antigüedad: 13 años, 10 meses
Puntos: 0
Problema SCANF

Hola chicos, bueno espero puedan ayudarme, tengo un problema y es que los scanf no me los lee consecutivamente, no me da error, al momento de compilar se ejecuta pero cuando llega a la fila 100 ("scanf"), pide el primero y despues el ultimo saltandose el resto

El otro problema que tengo es que no puedo restringir la cantidad de caracteres ingresados por el usuario, para las variables de tipo char

Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<conio.h>
  3. main()
  4. {
  5.     int i,n,cod1,cod2,cod3,cod4,pro1,pro2,pro3,pro4,puni1,puni2,puni3,puni4,cant1,cant2,cant3,cant4,tot1,tot2,tot3,tot4;
  6.     char nom[10], direc[15], fono[9], email[15];
  7.     clrscr();
  8.     gotoxy(2,2), printf("É");
  9.     gotoxy(2,25), printf("È");
  10.     gotoxy(80,2), printf("»");
  11.     gotoxy(80,25), printf("¼");
  12.     gotoxy(3,11), printf("Ú");
  13.     gotoxy(79,11), printf("¿");
  14.     gotoxy(3,21), printf("À");
  15.     gotoxy(79,21), printf("Ù");
  16.     gotoxy(55,2), printf("Ú");
  17.     gotoxy(79,2), printf("¿");
  18.     gotoxy(55,9), printf("À");
  19.     gotoxy(79,9), printf("Ù");
  20.     for (i=3;i<=79;i++){
  21.         gotoxy(i,1), printf("Í");
  22.         gotoxy(i,25), printf("Í");
  23.     }
  24.     for (n=2;n<=24;n++){
  25.         gotoxy(2,n), printf("º");
  26.         gotoxy(80,n), printf("º");
  27.     }
  28.     for (i=4;i<=78;i++){
  29.         gotoxy(i,11), printf("Ä");
  30.         gotoxy(i,13), printf("Ä");
  31.         gotoxy(i,15), printf("Ä");
  32.         gotoxy(i,17), printf("Ä");
  33.         gotoxy(i,19), printf("Ä");
  34.         gotoxy(i,21), printf("Ä");
  35.  
  36.     }
  37.     for (n=12;n<=20;n++){
  38.         gotoxy(3,n), printf("³");
  39.         gotoxy(10,n), printf("³");
  40.         gotoxy(40,n), printf("³");
  41.         gotoxy(54,n), printf("³");
  42.         gotoxy(65,n), printf("³");
  43.         gotoxy(79,n), printf("³");
  44.     }
  45.     for (i=56;i<=78;i++){
  46.         gotoxy(i,2), printf("Ä");
  47.         gotoxy(i,9), printf("Ä");
  48.     }
  49.     for (n=3; n<=8; n++){
  50.         gotoxy(55,n), printf("³");
  51.         gotoxy(79,n), printf("³");
  52.     }
  53.     gotoxy(10,11), printf("Â");
  54.     gotoxy(40,11), printf("Â");
  55.     gotoxy(54,11), printf("Â");
  56.     gotoxy(65,11), printf("Â");
  57.     gotoxy(10,13), printf("Å");
  58.     gotoxy(40,13), printf("Å");
  59.     gotoxy(54,13), printf("Å");
  60.     gotoxy(65,13), printf("Å");
  61.     gotoxy(10,15), printf("Å");
  62.     gotoxy(40,15), printf("Å");
  63.     gotoxy(54,15), printf("Å");
  64.     gotoxy(65,15), printf("Å");
  65.     gotoxy(10,17), printf("Å");
  66.     gotoxy(40,17), printf("Å");
  67.     gotoxy(54,17), printf("Å");
  68.     gotoxy(65,17), printf("Å");
  69.     gotoxy(10,19), printf("Å");
  70.     gotoxy(40,19), printf("Å");
  71.     gotoxy(54,19), printf("Å");
  72.     gotoxy(65,19), printf("Å");
  73.     gotoxy(10,21), printf("Á");
  74.     gotoxy(40,21), printf("Á");
  75.     gotoxy(54,21), printf("Á");
  76.     gotoxy(65,21), printf("Á");
  77.     gotoxy(3,13), printf("Ã");
  78.     gotoxy(3,15), printf("Ã");
  79.     gotoxy(3,17), printf("Ã");
  80.     gotoxy(3,19), printf("Ã");
  81.     gotoxy(79,13), printf("´");
  82.     gotoxy(79,15), printf("´");
  83.     gotoxy(79,17), printf("´");
  84.     gotoxy(79,19), printf("´");
  85.     gotoxy(58,4), printf("N§ Factura:");
  86.     gotoxy(58,7), printf("Rut: 99.585.488-4");
  87.     gotoxy(18,3), printf("ALMACEN Y TU HERMANA !!");
  88.     gotoxy(11,4), printf("Gran Avenida 2500 Loc A, La Cisterna");
  89.     gotoxy(5,12), printf("COD");
  90.     gotoxy(21,12), printf("Producto");
  91.     gotoxy(43,12), printf("Valor C/U");
  92.     gotoxy(56,12), printf("Cantidad");
  93.     gotoxy(70,12), printf("Total");
  94.     gotoxy(54,22), printf("  Total Bruto :");
  95.     gotoxy(54,23), printf("    Iva (19%) :");
  96.     gotoxy(54,24), printf("Total a Pagar :");
  97.     gotoxy(5,7), printf("Nombre     : ");
  98.     gotoxy(5,8), printf("Direccion  : ");
  99.     gotoxy(5,9), printf("Telefono   : ");
  100.     gotoxy(30,9), printf("E-mail : ");
  101.     gotoxy(18,8), scanf("%c",&nom);
  102.     gotoxy(18,9), scanf("%c",&direc);
  103.     gotoxy(40,9), scanf("%c",&fono);
  104.     gotoxy(4,14), scanf("%c",&email);
  105. return(0);
  106. }

de antemano muchas gracias

Última edición por Angelorokz; 01/07/2010 a las 23:19
  #2 (permalink)  
Antiguo 02/07/2010, 00:05
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Problema SCANF

el error es siguiente

scanf("%c",&nom);

cuando vas a leer una cadena de caracteres necesitas utilizar %s en lugar de %c, ademas el nombre de un arreglo es por si mismo un puntero por lo que no es necesario utilizar &
asi la sentencia de arriba quedaria asi

scanf("%a",nom);

prueba y me platicas como te fue
  #3 (permalink)  
Antiguo 02/07/2010, 00:16
 
Fecha de Ingreso: julio-2010
Mensajes: 4
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema SCANF

Gracias por la respuesta

me funciona a la perfeccion, pero no me toma el primer scanf se salta inmediatamente al 2°

se salta la linea "101" pasa inmediatamente del 100 al 102

Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<conio.h>
  3. main()
  4. {
  5.     int i,n,cod1,cod2,cod3,cod4,pro1,pro2,pro3,pro4,puni1,puni2,puni3,puni4,cant1,cant2,cant3,cant4,tot1,tot2,tot3,tot4;
  6.     char nom[10], direc[15], fono[9], email[15];
  7.     clrscr();
  8.     gotoxy(2,2), printf("É");
  9.     gotoxy(2,25), printf("È");
  10.     gotoxy(80,2), printf("»");
  11.     gotoxy(80,25), printf("¼");
  12.     gotoxy(3,11), printf("Ú");
  13.     gotoxy(79,11), printf("¿");
  14.     gotoxy(3,21), printf("À");
  15.     gotoxy(79,21), printf("Ù");
  16.     gotoxy(55,2), printf("Ú");
  17.     gotoxy(79,2), printf("¿");
  18.     gotoxy(55,9), printf("À");
  19.     gotoxy(79,9), printf("Ù");
  20.     for (i=3;i<=79;i++){
  21.         gotoxy(i,1), printf("Í");
  22.         gotoxy(i,25), printf("Í");
  23.     }
  24.     for (n=2;n<=24;n++){
  25.         gotoxy(2,n), printf("º");
  26.         gotoxy(80,n), printf("º");
  27.     }
  28.     for (i=4;i<=78;i++){
  29.         gotoxy(i,11), printf("Ä");
  30.         gotoxy(i,13), printf("Ä");
  31.         gotoxy(i,15), printf("Ä");
  32.         gotoxy(i,17), printf("Ä");
  33.         gotoxy(i,19), printf("Ä");
  34.         gotoxy(i,21), printf("Ä");
  35.  
  36.     }
  37.     for (n=12;n<=20;n++){
  38.         gotoxy(3,n), printf("³");
  39.         gotoxy(10,n), printf("³");
  40.         gotoxy(40,n), printf("³");
  41.         gotoxy(54,n), printf("³");
  42.         gotoxy(65,n), printf("³");
  43.         gotoxy(79,n), printf("³");
  44.     }
  45.     for (i=56;i<=78;i++){
  46.         gotoxy(i,2), printf("Ä");
  47.         gotoxy(i,9), printf("Ä");
  48.     }
  49.     for (n=3; n<=8; n++){
  50.         gotoxy(55,n), printf("³");
  51.         gotoxy(79,n), printf("³");
  52.     }
  53.     gotoxy(10,11), printf("Â");
  54.     gotoxy(40,11), printf("Â");
  55.     gotoxy(54,11), printf("Â");
  56.     gotoxy(65,11), printf("Â");
  57.     gotoxy(10,13), printf("Å");
  58.     gotoxy(40,13), printf("Å");
  59.     gotoxy(54,13), printf("Å");
  60.     gotoxy(65,13), printf("Å");
  61.     gotoxy(10,15), printf("Å");
  62.     gotoxy(40,15), printf("Å");
  63.     gotoxy(54,15), printf("Å");
  64.     gotoxy(65,15), printf("Å");
  65.     gotoxy(10,17), printf("Å");
  66.     gotoxy(40,17), printf("Å");
  67.     gotoxy(54,17), printf("Å");
  68.     gotoxy(65,17), printf("Å");
  69.     gotoxy(10,19), printf("Å");
  70.     gotoxy(40,19), printf("Å");
  71.     gotoxy(54,19), printf("Å");
  72.     gotoxy(65,19), printf("Å");
  73.     gotoxy(10,21), printf("Á");
  74.     gotoxy(40,21), printf("Á");
  75.     gotoxy(54,21), printf("Á");
  76.     gotoxy(65,21), printf("Á");
  77.     gotoxy(3,13), printf("Ã");
  78.     gotoxy(3,15), printf("Ã");
  79.     gotoxy(3,17), printf("Ã");
  80.     gotoxy(3,19), printf("Ã");
  81.     gotoxy(79,13), printf("´");
  82.     gotoxy(79,15), printf("´");
  83.     gotoxy(79,17), printf("´");
  84.     gotoxy(79,19), printf("´");
  85.     gotoxy(58,4), printf("N§ Factura:");
  86.     gotoxy(58,7), printf("Rut: 99.585.488-4");
  87.     gotoxy(18,3), printf("ALMACEN Y TU HERMANA !!");
  88.     gotoxy(11,4), printf("Gran Avenida 2500 Loc A, La Cisterna");
  89.     gotoxy(5,12), printf("COD");
  90.     gotoxy(21,12), printf("Producto");
  91.     gotoxy(43,12), printf("Valor C/U");
  92.     gotoxy(56,12), printf("Cantidad");
  93.     gotoxy(70,12), printf("Total");
  94.     gotoxy(54,22), printf("  Total Bruto :");
  95.     gotoxy(54,23), printf("    Iva (19%) :");
  96.     gotoxy(54,24), printf("Total a Pagar :");
  97.     gotoxy(5,7), printf("Nombre     : ");
  98.     gotoxy(5,8), printf("Direccion  : ");
  99.     gotoxy(5,9), printf("Telefono   : ");
  100.     gotoxy(30,9), printf("E-mail : ");
  101.     gotoxy(18,8), scanf("%s",&nom);
  102.     gotoxy(18,9), scanf("%s",&direc);
  103.     gotoxy(40,9), scanf("%s",&fono);
  104.     gotoxy(4,14), scanf("%s",&email);
  105. return(0);
  106. }
  #4 (permalink)  
Antiguo 02/07/2010, 01:31
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Problema SCANF

kitale el &, ya k como te dije el nombre de un arreglo es un apuntador al primer elemento del arreglo. Tambien debes de cuidar de no escribir mas caracteres que los que soporta el arreglo. Por ej nom solo soporta 9 caractares ya el 10° lo utiliza para colocar el caracter '\0' que indica que es un cadena de caracteres y no un arreglo de caracteres
  #5 (permalink)  
Antiguo 02/07/2010, 01:50
 
Fecha de Ingreso: julio-2010
Mensajes: 4
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema SCANF

gracias, sigo teniendo el mismo problema pero ya vere como lo soluciono, de todas formas ya puedo obtener los datos que tenia perdido

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:25.