figboy Posted May 13, 2018 at 10:43 PM Report #610529 Posted May 13, 2018 at 10:43 PM Boa noite a todos. Estou a fazer uma função para alterar o texto de um ficheiro, a estratégia que adotei para fazer isto foi escrever num texto temporário o que está no ficheiro original já com as alterações que quero fazer e no fim copiar o que está no ficheiro temporário para o ficheiro final. Mas não sei porque não estou a conseguir copiar do ficheiro temporário para o final, já fiz diversas tentativas para tentar corrigir mas não consegui. Se alguem conseguir detetar o erro fico muito agradecido. void main(){ char leitor[1000000], novaDescricao[10000], NomeTopico[100], pathTopic1[100], leitor1[10000]; int opcao; FILE *topico1, *topicTemp, *topicFinal; system("clear"); printf("Escreva o titulo do tópico a editar:"); scanf(" %[^\n]s", NomeTopico); sprintf(pathTopic1, "../Projeto/Topicos/%s",NomeTopico); printf("Escreva a nova descrição:"); scanf(" %[^\n]s", novaDescricao); topicTemp=fopen("../Projeto/Topicos/temp", "w"); topico1=fopen(pathTopic1, "r"); fputs(novaDescricao,topicTemp); fputs("\n", topicTemp); fgets(leitor, 1000000, topico1); while(fgets(leitor, 1000000, topico1) != NULL){ fputs(leitor,topicTemp); } fclose(topico1); topicFinal=fopen("../Projeto/Topicos/Ola1", "w"); while(fgets(leitor1,10000, topicTemp) !=NULL){ fputs(leitor1, topicFinal); } fclose(topicFinal); }
nunomonteiro123 Posted May 14, 2018 at 10:58 AM Report #610533 Posted May 14, 2018 at 10:58 AM Não tens que ler Read (r) e só depois dar Write(w)? 1 Report
figboy Posted May 14, 2018 at 11:16 AM Author Report #610534 Posted May 14, 2018 at 11:16 AM Que erro mais noob. Sim era isso, fechei o ficheiro temporário e voltei a abrir em modo de leitura e já ficou a funcionar. Obrigado
HappyHippyHippo Posted May 14, 2018 at 11:21 AM Report #610535 Posted May 14, 2018 at 11:21 AM fica a referência que estás a complicar algo muito simples ... void main() { char topico[100], path[100], descricao[10000]; FILE * fd; system("clear"); printf("Escreva o titulo do tópico a editar:"); scanf(" %[^\n]s", topico); printf("Escreva a nova descrição:"); scanf(" %[^\n]s", descricao); sprintf(path, "../Projeto/Topicos/%s", topico); if ((fd = fopen(path, "w")) == NULL) { printf("All Hell Breaks Loose !!!"); exit(-1); } fprintf(fd, "%s", descricao); fclose(topicFinal); } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
figboy Posted May 14, 2018 at 01:40 PM Author Report #610539 Posted May 14, 2018 at 01:40 PM Obrigado pela sugestão, mas nesse caso iria apagar tudo o que tenho no ficheiro, e a intenção é apenas alterar uma parte do ficheiro mantendo tudo o resto igual
HappyHippyHippo Posted May 14, 2018 at 03:54 PM Report #610550 Posted May 14, 2018 at 03:54 PM 2 hours ago, figboy said: Obrigado pela sugestão, mas nesse caso iria apagar tudo o que tenho no ficheiro, e a intenção é apenas alterar uma parte do ficheiro mantendo tudo o resto igual se pretendes fazer isso com esse código, vais ter uma surpresa ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
figboy Posted May 14, 2018 at 06:20 PM Author Report #610555 Posted May 14, 2018 at 06:20 PM Não estou a perceber, eu preciso de alterar a primeira linha de um ficheiro, com este código corrigindo o que tinha mal está a funcionar mas eu estou a aprender e provavelmente a cometer erros por isso se quiseres explicar o que estou a fazer mal fico agradecido
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now