Olá Leveditor.
Acredito que você colocou a variável errada, no lugar de listaN você deveria colocar livroN. O programa está fechando porque você está tentando salvar um vetor char em uma variável do tipo int.
//FAZER REGISTRO DE UM LIVRO
if(listaN == 1){
printf("Nome do livro: ");
fflush(stdin);
scanf("%[^\n]", listaN);
printf("Nome do autor: ");
scanf("%[^\n]", livroB);
fseek(file, 0, SEEK_SET);
fseek(file, 0, SEEK_END);
Ficando desse assim esse trecho do código:
//FAZER REGISTRO DE UM LIVRO
if(listaN == 1){
printf("Nome do livro: ");
fflush(stdin);
scanf("%[^\n]", livroN);
printf("Nome do autor: ");
fflush(stdin);
scanf("%[^\n]", livroB);
fseek(file, 0, SEEK_SET);
fseek(file, 0, SEEK_END);
E volto a frisar a importância de incluir o fflush(stdin); , ele vai garantir que nenhuma quebra de linha atrapalhe a leitura do seu scanf.
Fiz a modificação do restante do código:
#include <stdio.h>
int main(void){
printf("----------MENU----------\n");
printf("1-Fazer registro\n");
printf("2-Listar Livros\n");
printf("3-Listar revistas\n");
printf("4-Listar por caixa\n\n");
FILE *file;
FILE *fileN;
file = fopen("arquivo.txt", "a+");
fileN = fopen("fileN.txt", "a+");
char livroN[200];
char livroB[200];
char revistaN[200];
char revistaB[200];
int lista;
scanf("%d", &lista);
switch(lista){
case 1:
printf("1-Para registrar um livro\n");
printf("2-Para registrar uma revista\n");
int listaN;
scanf("%d", &listaN);
//FAZER REGISTRO DE UM LIVRO
if(listaN == 1){
printf("Nome do livro: ");
fflush(stdin);
scanf("%[^\n]", livroN);
printf("Nome do autor: ");
fflush(stdin);
scanf("%[^\n]", livroB);
fseek(file, 0, SEEK_SET);
fseek(file, 0, SEEK_END);
fprintf(file, "\nObra: %s \n", &livroN);
fprintf(file, "\nAutor: %s", &livroB);
fclose(file);
}
//FAZER REGISTRO DA REVISTA
else if(listaN == 2){
printf("Nome da revista: ");
fflush(stdin);
scanf("%[^\n]", revistaN);
printf("Nome da autor: ");
fflush(stdin);
scanf("%[^\n]", revistaB);
fseek(fileN, 0, SEEK_SET);
fseek(fileN, 0, SEEK_END);
fprintf(fileN, "\n\nObra: %s \n", &revistaN);
fprintf(fileN, "Autor: %s ", &revistaB);
fclose(fileN);
}
break;
case 2:
while(fgets(livroN, 200, file) != NULL){
printf(" %s", livroN);
}
fclose(file);
break;
case 3:
while(fgets(revistaN, 200, fileN) != NULL){
printf(" %s", revistaN);
}
fclose(fileN);
break;
case 4:
printf("1-Caixa 1\n2-Caixa 2\n3-Caixa 3");
int caixa;
scanf("%d", &caixa);
if(caixa == 1){
printf("livro1\n");
printf("livro2\n");
printf("livro3\n");
printf("livro4\n");
}else if(caixa == 2){
printf("livro5\n");
printf("livro6\n");
printf("livro7\n");
printf("livro8\n");
}
else if(caixa == 3){
printf("livro9\n");
printf("livro10\n");
printf("livro11\n");
printf("livro11\n");
}
break;
}
return 0;
}
Outra alteração que recomendo é utilizar o mode r+ para abrir o arquivo, nesse modo o arquivo é criado caso ele não exista, pode ver detalhes dos modos de leitura na documentação.
file = fopen("arquivo.txt", "a+");
fileN = fopen("fileN.txt", "a+");
Qualquer problema ou duvida pode falar.
Bons Estudos.