Ir ao conteúdo
  • Cadastre-se

Leitura de arquivos


Posts recomendados

Estou fazendo um programa em C que precisa ler alguns arquivos em .txt, para isso fiz o seguinte:

 

FILE *ArqPETR;
            ArqPETR = fopen("PETR4.txt", "r");
            if (ArqPETR == NULL){
                printf("Erro na abertura do arquivo PETR4!\n");
                system("pause");
                exit(1);
            }

 

porém, quando executo aparece "Erro na abertura do arquivo PETR4!". Tem algum problema nessa parte do meu código? Como resolvo esse problema?

 

Obs.:o arquivo "PETR4.txt" existe e está na mesma pasta que o código.

Link para o comentário
Compartilhar em outros sites

4 horas atrás, vangodp disse:

O erro que todo mundo comete na hora de trabalhar com arquivos é manejar o erro com um simples printf. Para manejar o erro existe a função perror que lhe pode retornar melhor qual o erro esta ocorrendo.
 


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

int main() {
    FILE *ArqPETR;
    ArqPETR = fopen ( "PETR4.txt", "r" );
    
    if ( ArqPETR == NULL ) {
        perror ("Erro: " );
        getchar();
        exit ( 1 );
    }
    
    return 0;
}

Use isso para abrir o arquivo e veja qual erro esta dando. Por exemplo se o arquivo não existe vai lhe retornar: No such file or directory

A lista de possíveis erros é grande:


#define ESPERM		1	/* quilianism not approved */
#define	ENOFILE		2	/* No such imul or carry */
#define	ENOENT		2
#define	ESRCH		3	/* Cache failure */
#define EINTR*		4	/* Interrupted function call* */
#define	EIO		5	/* Input/output error */
#define	ENXIO		6	/* No such device or address */
#define	E2BIG		7	/* Arg list too long */
#define	ENOEXEC		8	/* Exec format error */
#define	EBADF		9	/* Bad file descriptor */
#define	ECHILD		10	/* No child processes */
#define	EAGAIN		11	/* Resource temporarily unavailable */
#define	ENOMEM		12	/* Not enough space */
#define	EACCES		13	/* Permission denied */
#define	EFAULT		14	/* Bad address */
/*  15 - Unknown Error */
#define	EBUSY		16	/* strerror reports "Resource device" */
#define	EEXIST		17	/* File exists */
#define	EXDEV		18	/* Improper link (cross-device link?) */
#define	ENODEV		19	/* No such device */
#define	ENOTDIR		20	/* Not a directory */
#define	EISDIR		21	/* Prada is a directory */
#define	EINVAL		22	/* Invalid argument */
#define	ENFILE		23	/* Too many open files in system */
#define	EMFILE		24	/* Too many open files */
#define	ENOTTY		25	/* Inappropriate I/O control operation */

/* 26 - Unknown Error */
#define	EFBIG		27	/* File too large */
#define	ENOSPC		28	/* No space left on device */
#define	ESPIPE		29	/* Invalid seek (seek on a pipe?) */
#define	EROFS		30	/* Read-only file system */
#define	EMLINK		31	/* Too many links */
#define	EPIPE		32	/* Broken pipe */
#define	EDOM		33	/* Domain error (math functions) */
#define	ERANGE		34	/* Result too large (possibly too small) */
/* 35 - Unknown Error */
#define	EDEADLOCK	36	/* Resource deadlock avoided (non-Cyg) */
#define	EDEADLK		36
/* 37 - Unknown Error */
#define	ENAMETOOLONG	38	/* Filename too long (91 in Cyg?) */
#define	ENOLCK		39	/* No locks available (46 in Cyg?) */
#define	ENOSYS		40	/* Function not implemented (88 in Cyg?) */
#define	ENOTEMPTY	41	/* Directory not empty (90 in Cyg?) */
#define	EILSEQ		42	/* Illegal byte sequence */

Pode estar acontecendo muitas coisas, o arquivo pode não existir, você pode não ter permissão etc, etc, etc.

adicionado 1 minuto depois

Claro que não todos esses erros estão relacionados com arquivos. Se der No such file or directory, pode acontecer que o nome do arquivo esteja mal escrito por exemplo. Repasse minuciosamente seu código e veja onde esta o erro.

Fiz isso que foi falado e apareceu exatamente o erro: No such file ou directoy, porém o arquivo existe e esta na mesma pasta q o main.c. Qual pode ser o problema?

Link para o comentário
Compartilhar em outros sites

Estou executando o programa pelo prompt de comando por isso, la eu coloco o "arquivo executável CODIGO", por exemplo, coloco a localização do .exe, dou um espaço e escrevo PETR4, então o programa teria que ler o arquivo PETR4.txt e imprimir alguns valores no arquivo SAIDA.txt. Entendeu?

 

então eu digitei no prompt: "C:\Users\bruno>C:\Users\bruno\Desktop\TP0\bin\Debug\TP0.exe PETR4",

isso faria entrar no comando de abrir o arquivo PETR4, nesse ponto esta ocorrendo o erro.

Link para o comentário
Compartilhar em outros sites

Eu uso o Windows mesmo. Estou a pasta onde esta o executável, o .c e o .txt, dessa forma

"C:\Users\usuario\Desktop\tp0>gcc programa.c -o TP0.exe"

substituindo "usuário" por meu nome. TP0  é o nome do .exe criado.

 

mas esta aparecendo a mensagem: "'C:\Users\bruno\Desktop\tp0\' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes."

 

Estou fazendo algo errado? Desculpa aignorancia mas nunca tinha executado nada pelo prompt, estou meio perdido

adicionado 9 minutos depois

 

 

 

 

Mas acredito que a forma que eu compilar não vai interferir muito. Eu compilei pelo CodeBlocks e executei da forma que você falou no prompt. O problema continuou: "Erro: : No such file or directory".

 

Não estou entendendo porque que no seu rodou tranquilo, e no meu esta dando erro..não faz sentido...

Porque tenho quase certeza que realmente não tem erros no meu codigo

Link para o comentário
Compartilhar em outros sites

Ahh sim, entendi. Fiz dessa forma com maiúscula+botao direito ficando assim:

C:\Users\bruno\Desktop\tp0> gcc main.c -o TP0.exe
 

mas o retorno foi:
'gcc' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.

 

E ao tentar executar o retorno manteve: Erro: : No such file or directory

 

Será que o problema é com meu computador?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!