Rômulo_SD Postado Fevereiro 22, 2013 Denunciar Share Postado Fevereiro 22, 2013 Minha pergunta é como se faz para ler uma variável do tipo short e colocar em um arquivoestou tentando dos dois jeitos o do c e o do c++ mas os dois tão dando erro:Será que por eu estar abrindo do jeito c++ o modo de leitura do c não funciona?ofstream myfile; myfile.open ("alunos.dat"); short num; cout<<"Digite numero:"; cin>>num; //myfile.write(num,sizeof(short)); //fwrite(num,sizeof(short),1,myfile);esse é o erro do c++: invalid conversion from 'short int' to 'const char*'e esse é o do c: invalid conversion from 'short int' to 'const void*'| Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 PedroCunha Postado Fevereiro 22, 2013 Denunciar Share Postado Fevereiro 22, 2013 Se eu não me engano, para escrever no arquivo usando .write, o arquivo deve ser aberto como binário.Att.,Pedro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rômulo_SD Postado Fevereiro 22, 2013 Autor Denunciar Share Postado Fevereiro 22, 2013 e pra arquivo do tipo texto? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vega Postado Fevereiro 25, 2013 Denunciar Share Postado Fevereiro 25, 2013 Minha pergunta é como se faz para ler uma variável do tipo short e colocar em um arquivobasta usar a função fprintf, p.ex: fprintf(fp, "%hd", variavel); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Fevereiro 25, 2013 Denunciar Share Postado Fevereiro 25, 2013 Você tava tentando mandar um inteiro para uma função que recebe um ponteiro. Para resolver, use a referência (%num) e converta-a explicitamente para const char * usando reintepret_cast.Não use fwrite(), é uma função da cstdlib e você está usando as classes de manipulação de arquivos do C++, portanto fique com a ofstream::write().#include <fstream> using std::ofstream; #include <iostream> using std::cout; using std::cin; int main(void) { ofstream myfile; myfile.open ("alunos.dat"); short num; cout<<"Digite numero:"; cin>>num; myfile.write(reinterpret_cast<const char *>(&num),sizeof(short)); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rômulo_SD Postado Fevereiro 26, 2013 Autor Denunciar Share Postado Fevereiro 26, 2013 beleza mas se quiser fazer simplesmente assim:myfile<<num;da também? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Fevereiro 27, 2013 Denunciar Share Postado Fevereiro 27, 2013 beleza mas se quiser fazer simplesmente assim:myfile<<num;da também?Poder você pode, mas aí você estaria jogando o número como string no arquivo, enquanto fwrite() faz saída binária. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rômulo_SD Postado Fevereiro 27, 2013 Autor Denunciar Share Postado Fevereiro 27, 2013 e qual a diferença? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Fevereiro 28, 2013 Denunciar Share Postado Fevereiro 28, 2013 e qual a diferença?A representação na memória é diferente. Basicamente é a mesma diferença entre você fazer:char var[] = "64"; e int var = 64; Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rômulo_SD
Minha pergunta é como se faz para ler uma variável do tipo short e colocar em um arquivo
estou tentando dos dois jeitos o do c e o do c++ mas os dois tão dando erro:
Será que por eu estar abrindo do jeito c++ o modo de leitura do c não funciona?
esse é o erro do c++:
invalid conversion from 'short int' to 'const char*'
e esse é o do c:
invalid conversion from 'short int' to 'const void*'|
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.