• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

oliveira1991

não consigo criar os ficheiros

6 mensagens neste tópico

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

int inserir()
{
char nome[50];
char categoria[35];

char op;

FILE *a;

a = fopen("dados.txt","w");

printf("Nome: ");
scanf("%c",&op);
gets(nome);
printf("Categoria: ");
scanf("%c",&op);
gets(categoria);
printf("deseja inserir mais dados?(s)ou(n)");
scanf("%c",&op);
fclose(a);

switch(op)
{
	case 's' :
	case 'S' : inserir() ; break; 
	case 'n' :
	case 'N' : system("PAUSE"); break; 
}
}

int pesquisar()
{
char ch;
printf("livros inseridos :\n\n");
FILE *a;
a = fopen("dados.txt" , "r");
ch=getc(a); 
while(ch!=EOF) 
{
	putchar(ch); 
	ch=getc(a); 
}
fclose(a); 
}

int main()
{
char opcao;

do
{ 
	printf("-----------------------");
	printf("\n\tBibioteca\t\n");
	printf("\n\n\t\t 1) inserir Livros");
	printf("\n\n\t\t 2) pesquisar Livros");

	printf("\n\n\t\t 3) Sair");
	printf("\n\n\n\t\t\tOpcao: ");
	scanf(" %c", &opcao);
	fflush(stdin);
	switch(opcao)
	{
		case'1': inserir(); break;
		case'2': pesquisar(); break;
		case'3': break;
		default: puts("opcao INVALIDA!!!");
	}
	getchar();
}
while(opcao!=4);
}

boas!

este meu programa nao esta a criar os  ficheiros

alguem me pode ajudar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

acrescenta o seguinte código ao fopen("dados.txt","w") na função inserir:

if(a==NULL){
   perror("fopen");
}

e depois vê qual o erro que é sai para o ecrã.

Já agora, abre o ficheiro com o modo "a" em vez de "w", senão ele vai truncar o ficheiro a 0 bytes de cada vez que o abrir.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo que me pareceu tu não tens o programa a criar o ficheiro. Só tens "w" ou seja só vai escrever, cá para mim usa o "wt"

Pareceu-me também que tens aí uns problemas pois na função inserir tu fazes um scanf para a variável "op" antes de receberes as strings. Não percebi muito bem essa parte mas acho estranho.

Epá ... assim por alto com eu vi nao vi mais nada de irregular mas experimenta alterar o parâmetro do fopen como te disse e vê esses scanf's antes dos gets

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não vou acrescentar grande coisa ao tópico, apenas um alerta. Não uses a função gets, pois corres o perigo de ter um buffer overflow.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora