• 0
Sign in to follow this  
asantos38

imprimindo o valor ASCII dos caracteres

Question

#include <iostream>
#include <fstream>

using namespace std;

int main(){
	ofstream output("Myfile.txt");
	
	output << "Stephen Davis is a nice guy" << endl;
	
	output.close();
	
	ifstream input("Myfile.txt");
	
	while(input.good()){
		cout << input.get();
	}
	
	cout << endl;
	
	input.close();
	
	return 0;	
}

Boa tarde a todos.

Estou com dificuldades para fazer meu programa imprimir uma frase gravada em arquivo. Em vez de imprimir a frase o programa está imprimindo os valores ASCII.

Estou usando o método get() para ler os caracteres, o S.O. é o Ubuntu  e o compilador é g++ versão 6.3.0.

 

 

Edited by asantos38
acrescentar versão do compilador

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Olá eu já tive problemas semelhantes e sugiro que não use o gets (eu ainda n entendo) mas só o fprintf para gravar no arquivo e o fscanf para ler os dados.

Edited by fibonati1235813

Share this post


Link to post
Share on other sites
  • 0
Guest

Olá, amigo. Tenho um exercício desse tipo pronto q criei a poucos dias.

Nesse exercício eu carrego uma frase do arquivo, adiciono ela a um vector e depois seleciono uma frase de maneira aleatório. Para poder imprimir de uma forma melhor uma frase, no caso dela ser grande demais e não couber em uma linha, fiz uma pequena formatação

Espero q esse exercício te ajude a conseguir o q você está tentando fazer

 

// Nesse exercício é levado em consideração de que cada frase no arquivo esteja em uma linha
// Também é levado em consideração que o arquivo está no mesmo diretório do arquivo .cpp

#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <time.h>
#include <stdlib.h>
using namespace std;



int main()
{
	ifstream textReader; // uso da classe ifstream
	string line; // uso da classe string do C++
	vector<string> frases; // uso da classe vector do C++
	int index;
	string frase;
	
	system("title Frases");
	
	setlocale(LC_ALL, "Portuguese"); // Aqui o idioma é definido para português, para q na frase apareça a devida acentução
		
	srand(time(NULL));
	
	textReader.open("frases.txt", ios::in); // abre o arquivo com o modo de leitura
	
	if (textReader.is_open())
	{
		while (getline(textReader, line))
		{
			frases.insert(frases.end(), line); // aqui cada linha é inserida a variável do tipo vector
		}
		
		textReader.close(); // fecha o arquivo
	}
	
	index = rand() % frases.size();
	
	frase = frases[index];

	int j = 0;
	
	bool impresso = false;
	
	for (int i = 0; i < frase.length(); i++)
	{
		j++;
		if (frase.at(i) == ' ' && j > 100)
		{			
			cout << frase.substr(0, i) << endl;			// aqui uma pequena formatação para inserir uma quebra de linha p frases maiores
			cout << frase.substr(i, frase.length()) << endl;
			impresso = true;
			break;
		}
	}
	if (!impresso)
	{
		cout << " " << frase << endl;
	}
		
	cout << endl;
}

 

Agora um exemplo de arquivo q pode ser usado:

 

// Arquivo frases.txt

 

"Cada sonho que você deixa pra trás, é um pedaço do seu futuro que deixa de existir." (Steve Jobs)
"As pessoas não sabem o que querem, até mostrarmos a elas." (Steve Jobs)
"As pessoas ligam a televisão quando querem desligar o cérebro." (Steve Jobs)
"Concentre-se naquilo que você é bom, delegue todo o resto." (Steve Jobs)
"Se você viver cada dia de sua vida como se fosse o último, um dia você estará certo." (Steve Jobs)
"Seu tempo é limitado, Então não fique vivendo a vida dos outros." (Steve Jobs)
"Não deixe que o ruído da opinião alheia impeça que você escute a sua voz interior." (Steve Jobs)
"Ser feliz sem motivo é a mais autêntica forma de felicidade." (Carlos Drummond de Andrade)
"Só é lutador quem sabe lutar consigo mesmo." (Carlos Drummond de Andrade)
"Como as plantas, a amizade não deve ser muito nem pouco regada." (Carlos Drummond de Andrade)
"A confiança é ato de fé, e esta dispensa raciocínio." (Carlos Drummond de Andrade)
"Não é fácil ter paciência diante dos que a têm em excesso." (Carlos Drummond de Andrade)
"A arte é a auto-expressão lutando para ser absoluta." (Fernando Pessoa)
"Seus clientes mais insatisfeitos são sua melhor fonte de aprendizado." (Bill Gates)
"Todo mundo tem cliente. Só traficante e analista de sistemas é que tem usuário." (Bill Gates)
"É claro que darei computadores aos meus filhos, mas antes terão livros." (Bill Gates)
"A arte começa onde a imitação acaba." (Oscar Wilde)
"A música é o tipo de arte mais perfeita: nunca revela o seu último segredo." (Oscar Wilde)
"A arte é a mentira que nos permite conhecer a verdade." (Pablo Picasso)
"A arte de vencer se aprende nas derrotas." (Simon Bolívar)
"Em arte, procurar não significa nada. O que importa é encontrar." (Pablo Picasso)
"Às vezes a vida vai-te golpear a cabeça com um tijolo. Não percas a fé." (Steve Jobs)
"Inovação distingue entre um líder e um seguidor." (Steve Jobs)
"Que ninguém se engane, só se consegue a simplicidade através de muito trabalho." (Clarice Lispector)
"Terei toda a aparência de quem falhou, e só eu saberei se foi a falha necessária." (Clarice Lispector)

Edited by Guest
Errei na hora de inserir o código

Share this post


Link to post
Share on other sites
  • 0
Guest

Estive olhando melhor o seu código. Ao q parece o q você está fazendo é abrir o arquivo sem passar o modo como deseja q o arquivo seja aberto, se é para escrita ou se é para leitura.

Fiz algumas alterações no seu código p resolver esse ponto. Não testei no Linux, mas creio q deve funcionar tal como no Windows.

 

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
	ofstream textWrite;
	ifstream textReader;
	string line;
	
	textWrite.open("Myfile.txt", ios::out); // abre o arquivo para escrita
	
	textWrite << "Stephen Davis is a nice guy" << endl;
	
	textWrite.close();
	
	textReader.open("Myfile.txt", ios::in); // abre o arquivo para leitura
	
	if (textReader.is_open()) // verifica se o arquivo está aberto
	{
		while (getline(textReader, line)) // com o comando getline() lê linha a linha do arquivo
		{
			cout << line << endl; // imprime a linha lida
		}
		
		textReader.close(); // fecha o arquivo
	}
	
	cout << endl;
	
	return 0;	
}

está funcionando assim.

Se ajudou avisa, ok?

Abração! 

Share this post


Link to post
Share on other sites
  • 0
Guest

Rapaz. Vou ter q usar de humildade e reconhecer que não conhecia os métodos output e input, Desculpa pelo erro q cometi. Inda tenho muito o q aprender em C++ mesmo

O problema mesmo no seu código está na leitura do arquivo. Usei uma variável auxiliar do tipo string e com o mesmo comando getline() faço a leitura linha a linha do arquivo.

Seu exercício ficaria assim:

 

#include <iostream>
#include <fstream>
#include <string>
using namespace std;


int main()
{
	string line;
	
	ofstream output("Myfile.txt");
	
	output << "Stephen Davis is a nice guy" << endl;
	
	output.close();
	
	ifstream input("Myfile.txt");
	
	if (input.is_open())
	{
		while (getline(input, line))
		{
			cout << line << endl;
		}
		
		input.close();
	}
	
	cout << endl;
	
	return 0;	
}

Desculpa pela minha ignorância em desconhecer os métodos output e input. Inda não havia estudado sobre isso

 

"Só erra quem faz!"

"Só erra quem faz!"

Share this post


Link to post
Share on other sites
  • 0
Guest

Estive olhando na documentação do C++ e na verdade a questão é que da forma q você fez o exercício é uma maneira diferente de se abrir um arquivo. Peguei um pequeno exemplo do site CPlusPlus q usa essa abordagem para se abrir um arquivo.

ficaria assim o exemplo q pequei com algumas alterações:

 

// basic file operations
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
	
	string line;
	
	ofstream myfile("example.txt");	
    
	myfile << "Writing this to a file.\n";
    
	myfile.close();
          
	ifstream myFileReader("example.txt");
  
    if (myFileReader.is_open())
    {
  		while (getline(myFileReader, line))
  		{
  			cout << line << endl;
		}
		
		myFileReader.close();
    }
    
    cout << endl;
  
    return 0;
}

Não é questão dos métodos output e input. São apenas nomes dados as variáveis do tipo ofstream e ifstream, respectivamente. É apenas uma maneira que não conhecia para se abrir um arquivo.

Resumindo... Acabei aprendendo algo novo com isso!   \o/ 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this