Jump to content

leitura/escrita


seuqram
 Share

Recommended Posts

pessoal tou a fazer um jogo...

"batalha naval"

e faltame umas coisitas no menu(opçoes)

queria criar um ficheiro assim:

volume: 1000

balanço: 100

ritmo: 1000

modo de jogo: 2

...

eu sei fazer isso mas o que eu n sei é ler inteiros em linhas que eu quizer exemplo:

dizia ao programa para ler a linha 3, um inteiro e guardasse para a variavel a.

a variavel a valia 1000.

dizia ao pograma para ler a linha 4 do ficheiro... ele lia 2...

ja tentei tudo ate meter /n no fscanf para ler outra linha 😉 mas so que n percebo... pode ser que saibam alguma funçao para o que eu quero...

Link to comment
Share on other sites

http://www.cplusplus.com/reference/iostream/istream/getline/

tambem tens uma funcao getline para tratamento de ficheiros em C

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

nao ha nenhuma funçao stdio.h que fassa o que eu quero?(dizer ao programa em que linha de um ficheiro quero que leia)!

Nota que <stdio.h> é um header de C (e de C++ só por compatibilidade com C). Em C++ seria talvez melhor usar o cabeçalho <iostream>.

Não há nenhuma função (em C Standard) com protótipo no <stdio.h> que faça o que tu queres. Precisas de construir uma versão personalizada ... o que não é nada difícil.

Perguntas (válidas tanto para C como para C++):

se pedires a linha 6 dum ficheiro com 3 linhas, qual queres que seja o resultado?

se pedires a linha 4903 dum ficheiro e logo a seguir a linha 4902, da segunda vez queres ler o ficheiro novamente desde o início (ou o conteúdo do ficheiro fica guardado "dentro" da função)?

se pedires uma linha do ficheiro, mas essa linha não tiver um número (linha em branco, por exemplo; ou um comentário ...) qual queres que seja o resultado?

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

Nota que <stdio.h> é um header de C (e de C++ só por compatibilidade com C). Em C++ seria talvez melhor usar o cabeçalho <iostream>.

Não há nenhuma função (em C Standard) com protótipo no <stdio.h> que faça o que tu queres. Precisas de construir uma versão personalizada ... o que não é nada difícil.

Perguntas (válidas tanto para C como para C++):

se pedires a linha 6 dum ficheiro com 3 linhas, qual queres que seja o resultado?

se pedires a linha 4903 dum ficheiro e logo a seguir a linha 4902, da segunda vez queres ler o ficheiro novamente desde o início (ou o conteúdo do ficheiro fica guardado "dentro" da função)?

se pedires uma linha do ficheiro, mas essa linha não tiver um número (linha em branco, por exemplo; ou um comentário ...) qual queres que seja o resultado?

1-vai aparecer em branco!(se nao ouver nada la escrito,sim!)

2-quero que leia o conteudo do ficheiro fica guardado "dentro" da função

3-NULL

eu ja mexi com o fopen,fscanf,fpritf... e por isso que queria uma funçao da biblioteca stdio!

Link to comment
Share on other sites

so que ainda n percebi essa funçao "pikax" ela cria mesmo um ficheiro.txt?

a funcao getline() e' para teres uma linha no ficheiro

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

tens mesmo que criar uma função que te le a linha que pretendes.

tens que ver que o conteudo de um ficheiro é uma sucessão de bytes. apesar de veres por linhas os ficheiros de texto, isso em termos informáticos não é bem assim porque cada SO tem maneiras diferentes de interpretar uma mudança de linha.

uma solução seria assim (visto que o teu ficheiro é bem formatado):

void getLine(std::istream * file, std::string * string) {
  char buffer[256];
  file->getline(buffer, 256);
  string = buffer;
}

void getLineN(std::istream * file, std::string * string, int n) {
  file->seekg(0, ios_base::beg);

  int i = 0;
  while (i != n) {
    getLine(file, string);
    i++;
  }
}

void getLineValue(std::istream * file, int * value, int n) {
  std::string s;
  getLineN(file, &string, n);
  sscanf(string.c_str(), "%s:%d", value);
}

PS : não testado ... fica a ideia (uma pequena alteração ...)

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

-.-

1-eu nem conheco bem a biblioteca iostream...

2-sscanf? ou fscanf?

3-void getLineN(std::istream * file, std::string * string, int n) eu nem sei o que sao parametros!

4-nao percebo "->" so sei que pode acessar a algum membro de qual quer coisa mas n percebo...

5-nem percebi a logica :nono1: (com estas duvidas todas)!

pode ser que arranje outra sulucao eu proprio para o que eu quero...

ate posso criar um ficheiro.txt para cada inteiro que quero!

6-ainda n reparaste que sou um iniciante?! nem sei o que fazem alguns sinas em c/c++!

Link to comment
Share on other sites

-.-

1-eu nem conheco bem a biblioteca iostream...

2-sscanf? ou fscanf?

3-void getLineN(std::istream * file, std::string * string, int n) eu nem sei o que sao parametros!

4-nao percebo "->" so sei que pode acessar a algum membro de qual quer coisa mas n percebo...

5-nem percebi a logica :nono1: (com estas duvidas todas)!

pode ser que arranje outra sulucao eu proprio para o que eu quero...

ate posso criar um ficheiro.txt para cada inteiro que quero!

6-ainda n reparaste que sou um iniciante?! nem sei o que fazem alguns sinas em c/c++!

1 - a biblioteca iostream e para fazer inputs e outputs em C++

2- fscanf e para ficheiros, sscanf e para mandar informacao para um buffer.

3- o primeiro parametro e' um apontador para um ficheiro, o segundo para uma string, o terceiro e o numero da linha que queres.

4- o operador '->' e para aceder a um membro de um apontador.

6- Podes ser iniciante, mas se as tuas questões requerem um grau de dificuldade que nao  suportas, entao nao achas que devias de ganhar pratica a fazer exemplos menos "complexos" e indo subindo de dificuldade.

6 2a parte- os sinais procuras na net sobre operadores.

Eu de vez em quando meto-me a fazer "projectos" que requeiram conhecimentos que eu nao tenho.

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

voces disseram que a biblioteca studio nao era bom para eu usar neste problema?

ja resolvi meus problemas com a biblioteca stdio!...  😄

mas obrigado a todos por a cooperação...

quando meu jogo estiver pronto mando-o a cada um no forum 😛

Link to comment
Share on other sites

voces disseram que a biblioteca studio nao era bom para eu usar neste problema?

ja resolvi meus problemas com a biblioteca stdio!...  😛

LOL @ biblioteca studio ...

O que se passa é que o header <stdio.h> é um header de C (e nao de C++), que, quando usado em C++ nao usa algumas das "novidades" existentes em C++, tornando-se por isso mesmo, pouco recomendavel.

Assim mais ou menos, é como ter um Ferrari e um tractor e querer que o tractor funcione com gasolina de aviao ... ou que o Ferrari funcione com gasoleo agricola. Funcionar, funciona.

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

voces disseram que a biblioteca studio nao era bom para eu usar neste problema?

ja resolvi meus problemas com a biblioteca stdio!...  😛

mas obrigado a todos por a cooperação...

quando meu jogo estiver pronto mando-o a cada um no forum 😛

LOL... a biblioteca "stdio.h" e' C, em C++ e' recomendado usar "cstdio".

É algo parecido a utilizar "gets" funciona bem, mas podes correr o risco de overflow no buffer.

Quando tiveres o jogo terminado, manda para o pessoal ver 😉

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

ya eu mostrovos... 😄

se quizerem ver meu 1º jogo feito em allegro vejam este video:

http://www.youtube.com/watch?v=gQVPXr1eFGM&feature=plcp&context=C4c12cc9VDvjVQa1PpcFM6_LL7rsPZ_GDinQTE8Q5Md7BbuvCofks%3D

e depois la encontrarao o site para voces fazerem o download do jogo...

o video n ficou la grande coisa :bored: o programa gravou o som boe alto e ficou horrivel e o progrema tambem nao gravou fullscreen ficou um bocado entranho...

mas vejam o video e descarreguem meu 1º jogo 😛

quando meu segundo jogo estiver pronto meteo aqui no forum!"batalha naval"

Link to comment
Share on other sites

parabéns, esta engraçado, mas podias melhorar um pouco.

Devias deixar o user escolher entre full-screen ou windows mode.

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

parabéns, esta engraçado, mas podias melhorar um pouco.

Devias deixar o user escolher entre full-screen ou windows mode.

ya, mas isso e só se eu consseguisse fazer um janelinha pequena(daquelas quando aparece: voce que sair, sim ou nao) mas aparecia uma janelinha a dizer window mod/fullscreen

conessegues fazer isso?

Link to comment
Share on other sites

Trabalhei com o allegro pouco tempo e nao fiz quase nada, mas sei que da para mudar a resolucao, sem ter qe criar uma janela

tens aqui - procura por: set_gfx_mode

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

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.