Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Porque não consigo escrever em um arquivo txt

Estou tentando escrever um arquivo em C, porem estou tendo problemas para acessar o diretório, quando executo o programa o arquivo não é criado. Quando não especifico o caminho, o programa funciona normalmente

#include <stdio.h>

int main(){

    FILE *file;
    file = fopen('c:\\Users\\gluci\\OneDrive\\Área de Trabalho\\Automatos\\output\\teste4.txt', "w");
    fprintf(file, "abcde");
    fclose(file);
    return 0;
}

Ja tentei passar o caminho com e // também, e não obtive sucesso

2 respostas
solução!

Oi Gabriel, tudo bem?

Pelo código que você compartilhou, parece que você está tentando escrever em um arquivo de texto no diretório especificado. No entanto, você está tendo problemas para acessar o diretório e o arquivo não é criado.

Uma possível causa para esse problema é a utilização de barras invertidas () no caminho do arquivo. Em C, as barras invertidas são usadas para escapar caracteres especiais, então elas podem causar problemas ao especificar um caminho de arquivo.

Uma solução para isso é utilizar barras normais (/) ou duplicar as barras invertidas (\) no caminho do arquivo. Dessa forma, o caminho seria algo como:

file = fopen("c:/Users/gluci/OneDrive/Área de Trabalho/Automatos/output/teste4.txt", "w");

ou

file = fopen("c:\\\\Users\\\\gluci\\\\OneDrive\\\\Área de Trabalho\\\\Automatos\\\\output\\\\teste4.txt", "w");

Além disso, certifique-se de que o diretório especificado existe e que você tem permissão para escrever nele.

Um abraço e bons estudos.

Amigo Gabriel, tudo bem? espero que sim!

há um pequeno equivoco no caminho do arquivo, ele está escrito entre apóstrofos, mas o correto seria estar escrito entre aspas, note em:

file = fopen('c:\\Users\\gluci\\OneDrive\\Área de Trabalho\\Automatos\\output\\teste4.txt', "w"); //está entre apostrofo

o apostrofo serve representar UM único caractere, já para representar um vetor de caracteres (string) deve ser passado o argumento entre aspas:

file = fopen("c:\\Users\\gluci\\OneDrive\\Área de Trabalho\\Automatos\\output\\teste4.txt", "w"); // agora o caminho está entre aspas
  • se vc estiver no Linux a barra é "/ " (somente UMA para separar cada diretório) , pois ela esse é o padrão do Bash para representar os diretórios do sistema.
  • no Windows a barra é a invertiva "\", pois esse é o padrão de divisão do terminal do windows. (provavelmente, creio eu, q haja a necessidade de colocar duas "\\", pois o caractere "\" é um caractere de escape na linguagem C, ai quando vc coloca duas, o compilador entende que vc quer colocar uma barra invertida e não um caractere de escape.

detalhe

  • GERALMENTE no windows não usa "area de trabalho" como nome da pasta, mas sim "Desktop", lembre-se que letras maiúsculas devem ser consideradas!

dica

se vc colocar apenas o nome do arquivo:

file = fopen("teste4.txt","w");

ele vai criar o arquivo "teste4.txt" no diretório em que vc executar o programa ".exe".

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software