El siguiente programa pasa una estructura por referencia; umenta y decrementa el saldo de los clientes y los muestra por pantalla. Al compilarlo funciona, pero me da fallo de segmentación.
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
struct cuenta{
char nom[100];
float saldo;
};
int main(){
struct cuenta cliente[3];
struct cuenta *punt;
int i;
char c;
void aumento();
void decremento();
for(i=0; i<=2; i++){
scanf("%99s", cliente
[i
].
nom); scanf("%f", &cliente
[i
].
saldo); }
do{
printf("A--> Aumentar el saldo.\n"); printf("D--> Decrementar el saldo.\n"); if((c=='A') || (c=='a')){
printf("Numero del cliente: "); punt = &cliente[i];
aumento(&cliente[i]);
}
if((c=='D') || (c=='d')){
printf("Numero del cliente: "); punt = &cliente[i];
decremento(&cliente[i]);
}
}
while((c != 's') && (c != 'S'));
for(i=0; i<=2; i++)
printf("\nEl saldo del cliente %d: %.2f\n",i
, cliente
[i
].
saldo); }
void aumento(struct cuenta *sal){
float inc;
printf("Incremento del saldo: "); sal->saldo=sal->saldo+inc;}
void decremento(struct cuenta *sal){
float dec;
printf("Decremento del saldo: "); sal->saldo=sal->saldo+dec;}
En las dos funciones aumento y decremento declaramos struct cuenta *sal. *sal significa que accedemos al valor del salario antes de ser aumentado o decrementado ¿no?. Esta instrucción
¿qué hace y por qué está el operador flecha dos veces? El operador flecha accede al elemento de la estructura ¿no?.