Você está aqui: C++ ::: Win32 API (Windows API) ::: Arquivos e Diretórios

Arquivos e diretórios em C++ - Como escrever em arquivos usando a função WriteFile() da API do Windows

Quantidade de visualizações: 9052 vezes
A função WriteFile() da Win32 API é útil quando precisamos escrever em arquivos. Esta função foi projetada para escritas síncronas e assíncronas, enquanto WriteFileEx() é somente para escritas assíncronas.

Veja o protótipo desta função:

BOOL WINAPI WriteFile(
  HANDLE hFile,
  LPCVOID lpBuffer,
  DWORD nNumberOfBytesToWrite,
  LPDWORD lpNumberOfBytesWritten,
  LPOVERLAPPED lpOverlapped
);


Antes de escrevermos em um arquivo, é importante entendermos o significado dos parâmetros da função WriteFile():

a) HANDLE hFile - Este é o handle para o arquivo no qual queremos escrever. Este handle deve ser criado com os direitos de acesso de escrita GENERIC_WRITE.

b) LPCVOID lpBuffer - Um ponteiro para o buffer que contém os dados que serão escritos no arquivo.

c) DWORD nNumberOfBytesToWrite - O número de bytes a serem escritos no arquivo.

d) LPDWORD lpNumberOfBytesWritten - Um ponteiro para uma variável que receberá o número de bytes escritos. A função WriteFile() define o valor desta variável como zero antes de fazer seu trabalho ou verificação de erro.

d) LPOVERLAPPED lpOverlapped - Um ponteiro para um estrutura OVERLAPPED. Esta estrutura é exigida se o handle para o arquivo for obtido usando FILE_FLAG_OVERLAPPED para o parâmetro dwFlagsAndAttributes da função CreateFile(). Geralmente usamos NULL para este parâmetro.

Veja um trecho de código no qual usamos a função WriteFile() para escrever duas linhas em um arquivo texto:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[]){
  // dados a serem escritos no arquivo
  CHAR frase[80];
  DWORD nOut; // bytes escritos
  
  // nome do arquivo
  CHAR arquivo[] = "C:\\testes.txt";
  
  // vamos abrir o arquivo para escrita.
  // se o arquivo não existir nós vamos criá-lo.
  HANDLE hArquivo = CreateFile(arquivo, GENERIC_WRITE, 0, NULL,
    CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

  if(hArquivo == INVALID_HANDLE_VALUE){
    cout << "Erro ao abrir o arquivo: " << GetLastError() << endl;
  }
  else{
    // arquivo aberto com sucesso. Vamos escrever
    
    // dados a serem escritos no arquivo
    CHAR frase1[80] = "Programar em C++ é bom demais\r\n";
    CHAR frase2[80] = "E a Win32 é da hora!!!!";
    DWORD nOut; // bytes escritos
    
    // vamos escrever a primeira frase
    WriteFile(hArquivo, frase1, strlen(frase1), &nOut, NULL);
    cout << nOut << " bytes foram escritos. " << endl;
    
    // vamos escrever a segunda frase
    WriteFile(hArquivo, frase2, strlen(frase2), &nOut, NULL);
    cout << nOut << " bytes foram escritos. " << endl;   
  }
    
  // vamos fechar o handle
  CloseHandle(hArquivo);
  
  system("PAUSE");
  return EXIT_SUCCESS;
}


Link para compartilhar na Internet ou com seus amigos:

C++ ::: Dicas & Truques ::: Strings e Caracteres

Como inverter uma string em C++ usando as funções begin(), end() e reverse()

Quantidade de visualizações: 13183 vezes
Em várias situações nós precisamos inverter a ordem dos caracteres de uma palavra, frase ou texto em C++. Para isso nós podemos usar uma combinação das funções begin(), end() e reverse() da biblioteca padrão do C++.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <string>
#include <iostream>
#include <algorithm> 
 
using namespace std;
 
// função principal do programa C++ 
int main(int argc, char *argv[]){
  // vamos declarar um objeto da classe string
  string frase = "Gosto de programar em C++";
     
  // vamos mostrar a string original
  cout << "String original: " << frase << endl;   
     
  // agora vamos usar a função reverse() para inverter o 
  // conteúdo da string
  reverse(frase.begin(), frase.end());
      
  // e mostramos o resultado    
  cout << "String invertida: " << frase << endl;;
     
  cout << "\n" << endl;	    
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executarmos este código C++ nós teremos o seguinte resultado:

String original: Gosto de programar em C++
String invertida: ++C me ramargorp ed otsoG


C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Strings e Caracteres

Exercícios Resolvidos de C++ - Como retornar o código ASCII associado a um caractere em C++ - Ler um caractere e retornar o código ASCII correspondente

Quantidade de visualizações: 508 vezes
Pergunta/Tarefa:

Escreva um programa C++ que pede para o usuário informar um caractere (letra ou número) e mostre o código ASCII correspondente.

Sua saída deverá ser parecida com:

Informe um caractere: A
Você informou o caractere: A
O código ASCII correspondente é: 65
Resposta/Solução:

Veja a resolução comentada deste exercício em C++:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>

using namespace std;

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  char caractere;
  int codigo;
  
  // vamos pedir para o usuário informar uma letra, símbolo ou pontuação
  cout << "Informe um caractere: ";
    
  // vamos ler o caractere informado
  cin >> caractere;
    
  // agora vamos obter o código ASCII correspondente
  codigo = (int)caractere;
    
  // e mostramos o resultado
  cout << "Você informou o caractere: " << caractere << endl;
  cout << "O código ASCII correspondente é: " << codigo << endl;
  
  cout << "\n" << endl;
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

O Código Padrão Americano para o Intercâmbio de Informação (do inglês American Standard Code for Information Interchange - ASCII, pronunciado [áski]) é um sistema de representação de letras, algarismos e sinais de pontuação e de controle, através de um sinal codificado em forma de código binário (cadeias de bits formada por vários 0 e 1), desenvolvido a partir de 1960, que representa um conjunto de 128 sinais: 95 sinais gráficos (letras do alfabeto latino, algarismos arábicos, sinais de pontuação e sinais matemáticos) e 33 sinais de controle, utilizando 7 bits para representar todos os seus símbolos.


C++ ::: Dicas & Truques ::: Matemática e Estatística

Como calcular juros simples e montante usando C++

Quantidade de visualizações: 19583 vezes
O regime de juros será simples quando o percentual de juros incidir apenas sobre o valor principal. Sobre os juros gerados a cada período não incidirão novos juros. Valor Principal ou simplesmente principal é o valor inicial emprestado ou aplicado, antes de somarmos os juros. Transformando em fórmula temos:

J = P . i . n

Onde:

J = juros
P = principal (capital)
i = taxa de juros
n = número de períodos

Imaginemos uma dívida de R$ 2.000,00 que deverá ser paga com juros de 5% a.m. pelo regime de juros simples e o prazo para o pagamento é de 2 meses. O cálculo em C++ pode ser feito assim:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
  float principal = 2000.00;
  float taxa = 0.08;
  int meses = 2;
  
  float juros = principal * taxa * meses;
  
  cout << "O total de juros a ser pago é: " << 
      juros << "\n\n";
	
	system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

O montante da dívida pode ser obtido das seguintes formas:

a) Montante = Principal + Juros
b) Montante = Principal + (Principal x Taxa de juros x Número de períodos)

M = P . (1 + (i . n))

Veja o código:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
  float principal = 2000.00;
  float taxa = 0.08;
  int meses = 2;
  
  float juros = principal * taxa * meses;
  float montante = principal * (1 + (taxa * meses));
  
  cout << "O total de juros a ser pago é: " << 
      juros << "\n";
  cout << "O montante a ser pago é: " << 
      montante << "\n\n";
	
	system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}



Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Raio Hidráulico

Qual é o raio hidráulico em um canal de seção retangular com 2,00 m de largura por 1,20 m de altura? Considere que este canal está preenchido com 1/3 de água da sua capacidade.



A) 0,10 m

B) 0,29 m

C) 0,19 m

D) 2,29 m

E) 0,39 m
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Vigas a flexão simples: seções retangulares

O objetivo do dimensionamento de estruturas de concreto é obter segurança e economia. Muitas vezes, o projeto arquitetônico não possibilita vigas muito altas para grandes vãos. Uma solução adotada para esse tipo de situação, quando o concreto da seção da viga mais solicitada pode não resistir ao esforço de compressão, é adotar armadura dupla.

Considere que uma viga V (20x30) tem uma solicitação de momento fletor de 65,20kN.m. O concreto utilizado nessa viga tem resistência de 30MPa e a agressividade ambiental do local é classe II (considere que é uma viga pouco solicitada).

Das alternativas a seguir, assinale aquela que apresenta a área de aço da armadura comprimida dessa viga.

A) 1,48cm2.

B) 1,94cm2.

C) 5,48cm2.

D) 7,83cm2.

E) 9,77cm2.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Postura ética profissional

A resolução de dilemas éticos deve ser resultado de um processo de reflexão e análise, integrando valores morais e fatos para buscar uma solução moralmente correta.

Segundo Holtzapple e Reece (2006), quais os aspectos fundamentais para a resolução de dilemas éticos? Assinale a alternativa correta:

A) Ter clareza moral, ter clareza conceitual, manter-se parcial, conhecer todas as alternativas viáveis, ter razoabilidade.

B) Ter clareza moral, ter imprecisão conceitual, manter-se atualizado, conhecer todas as alternativas viáveis, ter razoabilidade.

C) Ter clareza moral, ter clareza conceitual, manter-se parcial, considerar exclusivamente as alternativas lucrativas, ter razoabilidade.

D) Ter variabilidade moral, ter clareza conceitual, manter-se alheio, conhecer todas as alternativas viáveis, ter razoabilidade.

E) Ter clareza moral, ter clareza conceitual, manter-se atualizado, conhecer todas as alternativas viáveis, ter razoabilidade.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Formas: Confecção e colocação

Durante a execução e cura de estruturas em concreto armado, as formas são submetidas a diversos tipos de solicitações, desde a montagem, passando pelo lançamento do concreto, peso da massa e armadura, etc. Sobre esses esforços, assinale a alternativa correta.

A) As formas dos pilares são mais solicitadas por cargas verticais.

B) As formas de lajes são mais solicitadas por cargas horizontais.

C) O peso da armadura é o principal esforço sobre qualquer tipo de forma.

D) As formas das vigas são mais solicitadas por esforços verticais.

E) O peso da armadura é determinante no dimensionamento da forma de vigas.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Instalações prediais de combate a incêndio

A aspersão de água por meio de chuveiros automáticos é uma técnica eficiente para combater o princípio de incêndio. A norma NBR 10897, que estabelece os parâmetros mínimos para o projeto e a instalação de sistemas de proteção contra incêndio por chuveiros automáticos, classifica os sistemas de chuveiros automáticos em quatro tipos básicos.

Analise os tipos de sistemas de chuveiros automáticos listados a seguir e associe-os com as suas respectivas características:

1) Sistema de ação prévia

2) Sistema de tubo seco

3) Sistema de dilúvio

4) Sistema de tubo molhado

( ) É indicado para locais em que não há risco de congelamento da água na tubulação.

( ) É caracterizado pelo tempo prolongado entre a abertura do chuveiro automático e a descarga de água.

( ) Demanda um sistema suplementar de detecção, que deve ser instalado na mesma área dos chuveiros automáticos.

( ) Os chuveiros ficam abertos e funcionam apenas quando a água entra na tubulação após o acionamento de uma válvula.

Assinale a alternativa que apresenta a sequência correta:

A) 1, 2, 3, 4.

B) 4, 3, 2, 1.

C) 3, 2, 1, 4.

D) 2, 3, 4, 1.

E) 4, 2, 1, 3.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de C++

Veja mais Dicas e truques de C++

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 9 usuários muito felizes estudando em nosso site.