Jump to content

I/O


Polmax
 Share

Recommended Posts

Quais seriam as melhores funções predefinidas no header stdio.h para

-> abrir um ficheiro de texto

-> ler o que esta la dentro

-> passar a string para um array

-> depois de o array estar modificado guardar esse ficheiro com a string do array ?

A string em C é um *char [tamanho da string] certo ?

Eu ontem estive a testar o comando fopen e o fgets mas não percebo muito bem como funcionam. Alias o fopen percebi +- eu só tenho que indicar o nome do ficheiro e o que ele vai fazer ("teste.txt","ler ou escrever ou outra coisa qualquer")

O fgets não percebi muito bem.

Outra duvida que tenho é um stream é unicamente a ligação entre imput-output-erro ?

Link to comment
Share on other sites

Ena tanta coisa ...

1) as funções não estão definidas nos headers; estão declaradas nos headers, isto é: os headers contêm os protótipos das funções. Os protótipos servem para o compilador poder saber como arranjar/converter os parametros e de que forma interpreta o valor de retorno. A definição é a parte de código que executa alguma coisa (que soma, que copia, que desenha, ...).

2) abrir um ficheiro de texto: fopen(). Nao te esqueças de o fechar com fclose().

3) ler o conteúdo: fgets()

4) passar a string para um array: ??? uma string é um array de caracteres em que um desses caracteres tem o valor 0 (zero)

5) escrever dados num ficheiro: abri-lo (ver ponto 2) para escrita, fprintf() e fclose().

6) C não tem o conceito de string como parte da linguagem. O que se faz é um array de caracteres e tem-se atenção para ter sempre um desses caracteres com o valor 0. Mas toda a gente, diz "string isto, string aquilo" e não há perigo de confusão 🙂

De qualquer maneira: um array não é um ponteiro, nem vice-versa. Uma string é um array. Em C muitos usos de ponteiros e arrays são iguais o que faz alguns programadores pensarem que arrays e ponteiros são a mesma coisa.

O que tu escreveste

A string em C é um *char [tamanho da string]

tem as duas partes: array e ponteiro. Está mal: não deve ter *.

A string em C é um char [tamanho da string + 1 para o zero]

Outra coisa importante: as string literais (que aparecem no código) são arrays não modificaveis.


Para fazer o que tu queres, o mais simples e directo é

a) abrir o ficheiro para leitura em modo texto

b) lê-lo todo

c) fechar o ficheiro

d) alterar os dados

e) abrir o ficheiro para escrita, em modo texto

f) escrever os dados

g) fechar o ficheiro

Não te esqueças da verificação de erros!

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Depende do objetivo mas...

1.

fopen()

2.

fscanf()

fgets()

3.

?

4.

fprintf()


Sim.


Tens um file pointer (File*). Não é suposto saberes o que contem, é só usares isso nas várias funções de input/output exclusivamente para identificação da stream que queres usar.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

...um stream é unicamente a ligação entre imput-output-erro ?

Tens dois tipos de streams: streams de input e streams de output (e, para complicar, streams de input/output).

Um stream de input é "uma fonte de dados".

Um stream de output é "um destino para dados".

O stdio foi criado para abstrair o conceito de ficheiros. Com certeza já ouviste dizer "em Unix tudo é um ficheiro" ... o equivalente em C é "tudo é (pode ser) um stream".

Em C podes ter um stream ligado ao teclado, ou a um ficheiro do disco, ou a uma ligação de rede, ...

O stdin, stdout, e stderr são simplesmente macros que expandem para streams (fluxos) predefinidos.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.