Falha de segmentação(imagem do núcleo gravada)


Primeiro código…

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main(){

FILE *teste;
char titulo(30);
char ch;
int regnum;
float preco;

teste=fopen("arqteste1.txt", "w");

do{
    printf("n Digite o título, registro, e preço:");
    scanf("%s %d %f", titulo, &regnum, &preco);
    fprintf(teste, "%s %d %0.2f", titulo, regnum, preco);
    printf("n Registrar mais um livro? (s/n) n");
    
    }while(ch=='s');
    scanf("%c", &ch);
    fclose(teste);
system("pause");

}

segundo código…

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main(){

FILE *teste;
char titulo(30);
char ch;
int regnum;
float preco;

teste=fopen("arqteste1.txt", "n");

while(fscanf(teste, "%s %d %f", titulo, &regnum, &preco) !=EOF)
printf("%s %d %f", titulo, regnum, preco);
fclose(teste);

system("pause");

}

OBS:O primeiro compila e executa tranquilo, mas a partir do segundo código ele não ler o doc feito pelo segundo…