Estructuras de un Libro pedir y mostrar datos

  array, c, estructura, funciones
/* 
 * Author: Desinweb
 */
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
struct libros {
    int codigolibro;
    char titulo[50];
    char autor[30];
    float precio;
};

void pedirdatos(struct libros *nuevolibro);//paso la esctructura a la función
void mostradatos(struct libros *nuevolibro);

int main(int argc, char** argv) {
    struct libros nuevolibro;//estructura declarada en el main
    int opciones;
    do {
        puts("Menu");
        puts("0. Salir");
        puts("1.Introducir datos");
        puts("2.Mostrar datos");
        printf("Introduce una opción \n");
        scanf("%d", &opciones);
        switch (opciones) {
            case 1:
                pedirdatos(&nuevolibro);//llamo a al función y le paso la estructura
                break;
            case 2:
                mostrardatos(&nuevolibro);
                break;
        }

    } while (opciones != 0);
    //funcion mostrar
    return (EXIT_SUCCESS);
}

void pedirdatos(struct libros *nuevolibro) {
    ////funcion pedir
    printf("Introduce el código del libro \n");
    scanf("%d", &(*nuevolibro).codigolibro);//introduzco el codigo del libro en la 1 posi
    printf("Introduce el título del libro \n");
    scanf("%s", &(*nuevolibro).titulo);
    printf("Introduce el autor del libro \n");
    scanf("%s", &(*nuevolibro).autor);
    printf("Introduce el precio \n");
    scanf("%f", &(*nuevolibro).precio);
    //

}

void mostrardatos(struct libros *nuevolibro) {
    printf("El titulo del libro es %s \n",&(*nuevolibro).titulo);
    printf("El autor del libro es %s \n",&(*nuevolibro).autor);
    printf("El código del libro es %d \n",&(*nuevolibro).codigolibro);
    printf("El precio  del libro es %f \n",&(*nuevolibro).precio);
};