Hola , he revisado y cambiado algunas cosas de tu código, míratelo y comentamos lo que no comprendas ...
Por cierto , por si están tentados a comentar el tema recursividad usada en el programa, no se molesten, tengo bastante claros los pros y contras ... en este caso la use solo para el ejemplo
Saludos
Por cierto , por si están tentados a comentar el tema recursividad usada en el programa, no se molesten, tengo bastante claros los pros y contras ... en este caso la use solo para el ejemplo
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>//funcion malloc()
//no debes usar nunca conio
//#include <conio.h> // funcion getch()
#include <string.h> // funcion strcpy()
#define MAX_REG 2 //Define el maximo numero de registros
//limpia el buffer
#define LIMPIAR_BUFFER while(getchar() != '\n')
// Primero definimos los tipos
typedef struct registro1
{
char concepto[30+1];
char RFC[21+1];
float monto;
int mes;
struct registro1* sig;
}ingreso;
int introduceRegistro(ingreso **pIngreso);//le pasamos el puntero original de la lista
//agrega un elemento a la lista
void addIngreso(ingreso **pIngreso , ingreso *aux );
//imprime el campo concepto de todos los elementos en la lista
void imprimeConcepto(ingreso *pIngreso);
int main()
{
ingreso *pIngreso = NULL;
printf("\nIngresa los datos del registro \n");
introduceRegistro(&pIngreso);
printf("presiona una tecla para continuar...\n") ;
getchar();
return 0;
}
void addIngreso(ingreso **pIngreso , ingreso *aux ){
if(*pIngreso == NULL){
*pIngreso = aux;
}else{
//llamamos recursivamente a la función
addIngreso(&((*pIngreso)->sig) , aux);
}
}
void imprimeConcepto(ingreso *pIngreso){
if(pIngreso != NULL){
printf("%s \n", pIngreso->concepto);
imprimeConcepto(pIngreso->sig);
}
}
int introduceRegistro(ingreso **pIngreso)
{
int i;
//lo usamos para ir agregando la información
ingreso *aux;
for(i=0 ; i<MAX_REG ; i++ ){
aux = (ingreso*)malloc(sizeof(ingreso));//A todo puntero hay que asignarle memoria.
printf("Concepto :");
gets(aux->concepto);
printf("RFC :");
gets(aux->RFC);
printf("Monto :");
scanf("%f",&aux->monto);
LIMPIAR_BUFFER;
printf("Mes :");
scanf("%d",&aux->mes);
LIMPIAR_BUFFER;
//lo agregamos a la lista
addIngreso(pIngreso, aux);
}
printf("Los valores del campo concepto de la lista de ingresos son : \n");
//mostramos el "concepto" de todos los campos
imprimeConcepto(*pIngreso);
return 0;
}
Saludos