Ir ao conteúdo
  • Cadastre-se

C Definir arquivo a ser lido no código em C


Posts recomendados

Olá, estou começando agora com arquivos e gostaria de saber se há alguma forma de entrar com um nome de arquivo a ser lido ao longo do programa. Abaixo tem mais ou menos uma ideia do que estou pensando, mas está aparentemente errada, tentei entrar com a string nome na função "fopen", mas ela só recebe dois argumentos.

 

printf("Nome do Arquivo: ");
    scanf(" %[^\n]", nome);
    FILE *arq, *trad;

   
    arq = fopen("/home/CIN/lfms/Documents/%s","rb");
    

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Luis Felipe Miranda Como o primeiro argumento de fopen é uma string, você precisará montar essa string, não tem como usar símbolos do printf nesse caso. Monte usando:

 

sprintf(char *, const char *, ...)

 

O que você pode fazer é pegar o caminho inteiro com o arquivo e mandar para o fopen.

fopen(arquivo,"rb").

Ou você já define esse caminho com #define e depois pede o nome do arquivo e usa o sprintf...

Exemplo:

#include <stdio.h>
#define PATH "/home/CIN/lfms/Documents/"

int main(){
char arquivo[100], buffer[100];
printf("Nome do arquivo: ");
scanf(" %[^\n]s", &arquivo);

sprintf(&buffer, "%s%s", PATH, arquivo);

//... fopen(buffer, "rb");

}

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Luis Felipe Miranda   foi uma boa ideia do @TYSQUARE89   porém não entendi se você quer usar o nome ou o caminho do arquivo para abrir o arquivo ,  se você quiser que o usuário digite o nome do arquivo e então abrir esse arquivo, então você pega o nome e adiciona o tipo de arquivo e usa o fopen assim :

#include <stdio.h>
#include <string.h>
FILE *arq;
char a,nome[30];
int main(){
    printf("digite o nome do arquivo");
    scanf("%s",&nome);/*nome do arquivo que esteja na mesma pasta do programa */
    strcat(nome,".txt");/*adiciona o tipo de arquivo */
    arq=fopen(nome,"r");/*abre o arquivo */
    if(arq==NULL)printf("erro no arquivo");
    while(fscanf(arq,"%c",&a) != EOF){
        printf("%c",a);/*imprime cada caractere do arquivo */
    }
    fclose(arq);/* fecha o arquivo */
    return 0;
}

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...