Ir ao conteúdo
  • Cadastre-se
IsacBot

RESOLVIDO Qual é melhor para manipulação de arquivos? c ou c++?

Recommended Posts

Estou estudando a linguagem de programação C, porém, pretendo me aprofundar em C++.

 

Sei que em C++ posso utilizar funções e paradigmas de C e tenho dúvidas se devo usar as funções de C (fprintf(), fscanf()) ou os objetos da fstream de C++.

 

PS: Desculpa se eu falei alguma besteira, mas eu estou começando a estudar estas linguagens e sou muito leigo ainda. :v  

Compartilhar este post


Link para o post
Compartilhar em outros sites

@IsacBot Eu aconselho você a começar programar em C++, pois quem programa em C++  é capaz de programar em C, devido à semelhança entre as linguagens e o fato do C++ ser uma extensão do C.

 

Mas existem algumas pequenas diferenças sintáticas e semânticas entre as linguagens que tornam alguns trechos de código C válidos em código C++ inválido.

 

Se aprofunde em C++ e depois estude o pouco que falta da linguagem C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A diferencia poderia se dizer que é "filosófica". >_<

Em C trabalhamos com "Descritor de Arquivos", uma espécie de ponteiro a arquivo, também conhecido originalmente por "File Descriptor" ou abreviadamente por "fd".

FILE* fd;
fd=fopen(NomeDoArquivo, ModoDeAbertura);

Em c++ o conceito é de trabalhar com streams, que traduzido para leigos quer dizer fluxo de dados.
Para trabalhar com arquivos você pense que ou tem fluxo de entrada(in) ou de saída(out), de dados.

//fluxo saida
ifstream fout;
fout.open(NomeDoArquivo, Flags(Modificadores opcionais) );
fout << "cpp";

//fluxo entrada
ifstream fin;
fin.open(NomeDoArquivo, Flags(Modificadores opcionais) );
string palavra;
fin >> palavra;

Tecnicamente fin e fout são obviamente nomes que dei assemelhando-se a cout e cin, porém são também uma espécie de ponteiro que marca a posição onde nos encontramos no arquivo, assim como em C. A diferencia é que C++ se pode apreciar é o uso de operadores << e >> em relatividade a C que não inclui essa prática.

Sinceramente em todos esses anos trabalhando com ambos linguagens não vejo grandes diferenças, posso fazer a mesma coisa com um linguagem que com outro. A diferença talvez mais significativa seja a linguagem em si, cpp acho um linguagem mais útil a dia de hoje, permite trabalhar com streams como cout, cin, ifstrem, ofstream, stringsteram, etc, classes e todo o relacionado com elas como a OO. Sempre que quiser trabalhar com C dentro de CPP será possível já que C esta incluído dentro de CPP também, ou como dizem... cpp é um "superconjunto de C", antigamente se poderia dizer isso, porém C++ já foi tão remodelado que é um linguagem completamente  independente de C.

As vezes pode ser que também queiramos fazer algo muito simples e pequeno, quando isso acontece prefiro faze-lo em c, mas quando a coisa é seria e demolidora prefiro usar c++, porque brinda algumas facilidades que C não fornece, ainda a cambio de inclusão de coisas mais complexas como OO. A OO a objetos pode ser uma barreira difícil de se superar ao principio para um programador novato, sobre tudo se esse programador já veio de outro linguagem como C, pode fazer sua cabeça explodir(>_<), mas superada essa etapa de aprendizagem OO pode se fazer querer, e em alguns casos pode criar muita dependência(Como uma droga). XD

Sinceramente acho que quando uma pessoa tem algumas duvidas como essa deveria experimentar ambas formas para tirar suas conclusões.

Se quiser um conselho aprenda C++ pois é um linguagem com maior saída hoje em dia. Más seria mentir se achar que vai aprender um sem aprender o outro praticamente :muro:, eu optei por aprender ambos, e não me arrependo disso.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vangodp

Realmente, concordo com sua opinião.

 

Obrigado pela breve explicação das streams. Não estava encontrando um bom tutorial sobre o assunto - ao menos não para mim que sou bastante leigo em C/C++.

 

Mas, sobre a OO: eu comecei a estudar programação com java e... Não é possível se livrar desse paradigma nessa linguagem... só que eu não lembro de mais nada de java, nem de OO por causa da falta prática... :v

 

De qualquer forma, muito obrigado pela resposta. :D 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×