1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Duvida sobre o "control+z" em c++...

Discussão em 'Programação' iniciada por nobita6, 30 de Julho de 2009. (Respostas: 1; Visualizações: 650)

  1. Boas,
    Vi este exercicio num livro de programação em c++ e não o entendi, pois sou um iniciante na programação em c++;

    Código:
    #include <iostream.h>
    #include <fstream.h>
    #include <iomanip.h>
    const int MAX_CHARS =16;
    void main() {
    
            char fileName[MAX_CHARS]; int ch; 
        cout << "Nome do ficheiro destino? ";
            cin >> setw(MAX_CHARS) >> fileName;
            ofstream destination( fileName ); 
        cout << "Escrever texto terminando com EOF (CTRL z)"
                    " situado no principio de uma linha" << endl;
        while ( (ch = cin.get()) != EOF ) 
                     destination.put( (char) ch );
    
    }
    
    A minha duvida é, porque é que so para quando o "control+z" for digitado no inicio da frase, não percebo...?
    Obrigado pela ajuda...
     
    Última edição pelo moderador: 30 de Julho de 2009
  2. addicted

    addicted Power Member

    Tenho quase a certeza que esse comportamento se deve a uma linha de comandos em modo canónico.
    Provavelmente ao inserires um EOF (CTRL+Z em Windows mas CTRL+D em Unix) ele descarta esse caracter e trata o stream de dados inseridos até ao momento. Se reparares, se digitares dois EOF a meio de uma frase já funciona bem. Suspeito que o primeiro EOF é considerado como um fim de linha e o segundo é tratado como um simples EOF. Aliás, se fizeres uma pequena alteração ao teu ciclo while e testares desta forma:

    Código:
    while ( (ch = cin.get()) != EOF ) {
                     destination.put( (char) ch );
    		 cout << " > " << (char) ch << endl;
    	}
    verificas com este código o que acabei de te dizer.

    Resumindo e respondendo à tua pergunta, o código está correcto e o "pormenor" está na forma como a linha de comandos passa o que digitas ao programa.
     

Partilhar esta Página