Ir para o conteúdo
oliveira1991

não consigo criar os ficheiros

Mensagens Recomendadas

oliveira1991    0
oliveira1991

#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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
edsousa    0
edsousa

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
IRX773    2
IRX773

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Localhost    7
Localhost

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.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade