Manipulação de arquivos em C. [RESOLVIDO]

1. Manipulação de arquivos em C. [RESOLVIDO]

Gileno Cordeiro Duarte
Duarte_Gileno

(usa Outra)

Enviado em 25/07/2018 - 09:26h

Bom dia, sou estudante e me foi solicitado pelo professor fazer um trabalho onde uma das etapas envolve criar vários arquivos TXT em C com um programa, pensei em criar uma função que toda vez que fosse chamada criasse um arquivo TXT com o nome do que eu passasse para ela mas não tenho ideia se passo o um tipo char ou se tenho que passar algo relacionado ao ponteiro do arquivo, ou como vou fazer para essa função criar o arquivo com exatamente o nome que vou passar, se alguém puder me dar uma ajuda agradeço muito, não sou experiente em programação, então sinto muito por qualquer erro. Obrigado.


  


2. MELHOR RESPOSTA

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 26/07/2018 - 00:08h

Duarte,

Acredito que você queira criar uma função que faça todo o processo, como escrito acima pelo Paulo "Mas se você quiser que ela faça todo o processo de abrir/criar, gerar o conteúdo e finalizar a gravação fechando o arquivo, então faz mais sentido passar como string o nome do arquivo a ser manipulado.", iremos enviar uma string o nome do arquivo a ser criado.

Veja esse exemplo de código em Linguagem C.
#include <stdio.h>
#include <string.h>

/* Função que cria um arquivo
O argumento é o nome do arquivo */
int criarArquivo(char nome[]) {
/* Verificando se o nome do arquivo não está vazio*/
if (strlen(nome) == 0)
return 0;

FILE *arq;

/* Abertura/criação o arquivo no mode de escrita */
arq = fopen(nome, "wt");

/* Verificando se não ocorreu uma falha na abertura/criação do arquivo */
if (arq == NULL) {
return 0;
}
else {
/* Abertura/criação ocorreu com sucesso */

/* Escrever informações no arquivo... */

/* Fechando o arquivo */
fclose(arq);

return 1;
}
}

/* Função principal do sistema */
int main(int argc, char **argv)
{
/* 15 caracteres, pondedo gerar nomes iniciando em arquivo0.txt (12 caracteres)
até arquivo9999.txt (15 caracteres), sendo um total de 10.000 arquivos */
char nomeArquivo[15];

/* Quantidade de arquivos que o programa irá gerar */
int quantidadeDeArquivos = 10;

/* Laço para gerar o nome dos arquivos e chamar a função criarArquivo() que cria
os arquivos no sistema operacional */
for(int i=0;i<quantidadeDeArquivos;i++) {
/* Gerando o nome do arquivo */
sprintf(nomeArquivo, "arquivo%d.txt", i);

/* Chamando a função que irá criar o arquivo */
if (criarArquivo(nomeArquivo))
printf("Arquivo %s criado com sucesso\n", nomeArquivo);
else
printf("Falha ao criar o arquivo %s\n", nomeArquivo);
}

return 0;
}


Abraço,
Diego M. Rodrigues

3. Re: Manipulação de arquivos em C.

Paulo
paulo1205

(usa Ubuntu)

Enviado em 25/07/2018 - 10:23h

No caso de passar o nome do arquivo, você provavelmente não vai querer passar apenas “um [dado do] tipo char”, como você indicou em sua questão, mas sim, uma string de caracteres, que é armazenada como um vetor de caracteres e passada de um lado para outro como um ponteiro de caracteres para o primeiro elemento do vetor. Tenha cuidado com a terminologia: caráter, vetor e ponteiro são coisas diferentes.

Tendo dito isso, sua escolha vai depender de o que você quer que a função faça. Se você quiser que ela apenas gere conteúdo para o arquivo, pode passar a ela apenas um ponteiro para arquivo, que tenha sido adquirido pela criação/abertura do arquivo em alguma outra parte do programa. Mas se você quiser que ela faça todo o processo de abrir/criar, gerar o conteúdo e finalizar a gravação fechando o arquivo, então faz mais sentido passar como string o nome do arquivo a ser manipulado.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts