[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: problema con scanf (novato)



segmentation fault escribió:

El programa original podría quedar tal que así:

#include <stdio.h>
#include <stdio_ext.h>
#include <unistd.h>
#include <stdlib.h>

int N; /*Numero de elementos*/
int a;
char respuesta='n';
float *longitud;

int main(){

	printf("number of elements? [1-100]\n");
	scanf("%d",&N);


	longitud = (float*)malloc(N*sizeof(float));

	while(respuesta=='n'){
		printf("enter element length, starting from reflector to last director [mm]\n");
				
		for (a=0;a<N;a++) {
			printf("element number %d : ",a);
			scanf("%f",(longitud+a));
		}

		printf("You have entered:\n");

		for (a=0;a<N;a++)    {
	   		printf("element number %d : ",a);
  			printf("%f\n",*(longitud+a));
		}

		printf("is data correct? [y/n]\n");
		__fpurge(stdin);
		respuesta=getchar();
	}

	exit(0);
}


Muchísimas gracias a todos por vuestras magníficas explicaciones. Ahora
creo que lo he entendido de una vez. En especial al señor "segmentation fault" por el extenso escrito. A partir de ahora andaré siempre
con cuidado con los búfers a la hora de leer datos. Digamos que el C
está más cerca del ensamblador que del BASIC :-) . El tema de los
punteros, que en un principio generaba en mí un poco de rechazo, me doy
cuenta de que tiene una potencia increíble y es muy elegante. Muy
elegante lo del malloc, tomaré nota. (Qué burro yo con el float longitud[100])..... hala, como sobra memoria....

Gracias a todos, hay veces que con las páginas del manual y los libros
no termina uno de tenerlo claro.
Saludos.
Ramiro.






Reply to: