Autor
|
Tema: matriz de caracteres (Leído 2,003 veces)
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos estoy haciendo una simple matriz a la que le tengo que ingresar caracteres, pero que no me lee los datos y no entiendo por que nt main() { int i,j,n,m; char matriz[MAX][MAX]; printf("Dame el numero de filas: "); printf("Dame el numero de columnas: "); for(i=0;i < n;i++) { for(j=0;j < m;j++) { printf("Dame el elemento (%d,%d):\n",i ,j ); scanf("%c",&matriz [i ][j ]); } } return 0; }
de antemano gracias
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Cuando tengas un problema con un programa y este sea pequeño por favor publica este completo.
El porque el programa no realiza una pausa al pedir cada uno de los elementos se debe a que el especificador "%c" se traga el primer carácter que encuentre en el bufer de la entrada estándar y, en tu caso y en varias ocasiones, este es el avance de linea de (valga la redundancia) la linea anterior.
Para evitarlo basta con utilizar " %c" en la llamada a scanf. El espacio en " %c" es necesario para descartar cualquier carácter de espacio blanco (espacio, tabulador, avance de linea) que se encuentre en el mentado bufer.
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
m@o_614
Desconectado
Mensajes: 389
|
muchas gracias por sus respuestas una ultima pregunta ahora tengo una matriz que me tiene que ingresar solamente numeros, ya le puse la condicion para que en caso de ingresar una letra u otro caracter me marque un error pero por ejemplo si me pide ingresar un numero y yo le pongo 12b aunque tenga una letra si me lo toma por bueno y quiero evitarlo,como lo haria? int main() { int i,j,n,m; char matriz[MAX][MAX]; printf("Dame el numero de filas: "); printf("Dame el numero de columnas: "); for(i=0;i < n;i++) { for(j=0;j < m;j++) { printf("Dame el elemento (%d,%d):\n",i ,j ); scanf("%s",&matriz [i ][j ]); if(matriz[i][j] < 48 ||matriz[i][j] > 57 ) { printf("Error!!Solo puede ingresar numeros\n"); j--; } } } return 0; }
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
El problema se debe a que estas utilizando: scanf("%s", &matriz [i ][j ]);
El especificador de formato "%s" es para leer una palabra, como ya te comente para leer un carácter en tu programa debes utilizar " %c". Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Alguien sabe buscar palabra de x caracteres y los demás caracteres a continuació
Programación Visual Basic
|
usuario oculto
|
3
|
5,092
|
2 Agosto 2010, 18:36 pm
por Psyke1
|
|
|
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
|
EddyW
|
2
|
5,879
|
14 Agosto 2010, 06:18 am
por EddyW
|
|
|
MATRIZ que imprima como una matriz en forma de cuadrado... ayudaaaaa!! help
Programación C/C++
|
oscarpy
|
3
|
8,564
|
9 Abril 2012, 16:23 pm
por Xandrete
|
|
|
Matriz con caracteres
Programación C/C++
|
7hongo7
|
2
|
2,090
|
28 Marzo 2013, 23:19 pm
por 7hongo7
|
|
|
Enviar una matriz desde una funcion a la matriz del main
Programación C/C++
|
erest0r
|
3
|
3,606
|
22 Junio 2013, 09:05 am
por leosansan
|
|