Ir ao conteúdo
  • Cadastre-se
Celestino Alona

C# Manipulação de arquivos txt

Recommended Posts

Bom dia, estava fazendo meu estudo de c/c++ e me deparei com um problema na hora de adicionar informações à um arquivo.txt que eu criei. Eu estou tentando fazer um código simples em que o usuário digita seu nome, o mesmo recebe algumas alterações, e depois esse nome é adicionado ao arquivo (adicionado, sem apagar o que já está). Porém, embora o programa rode, não acontece o que deveria.

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<locale.h>
#include<ctype.h>

using namespace std;

main()
{
	setlocale(LC_ALL,"portuguese");
	
	char word[300], copy[300];
	int i=0;
	
	FILE *file1 = fopen("Arquivo 2.txt", "a");
	
	
	cout << "Insira seu nome : ";
	gets(word);
	
	while(word[i] != '\0')
	{
		if(islower(word[0]))
		{
			word[0] = toupper(word[0]);
		}
		i++;
		if(i != 0)
		{
			word[i] = tolower(word[i]);

		}
	}
	
	cout << "\n\nSeu nome é : " << word << "\n\n";
	
	while(fgets(copy, 300, file1) != '\0')
	{
		fputs(word, file1);
	}
	
	
	
	return 0;
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
36 minutos atrás, Celestino Alona disse:

FILE * file1 = fopen ("Arquivo 2.txt", "a");

 

Nesse momento abriu-se o arquivo-texto no modo append: Os dados já serão gravados no fim do arquivo. Basta agora usar o comando de gravação que, suponho:

 

36 minutos atrás, Celestino Alona disse:

	while(fgets(copy, 300, file1) != '\0')
	{
		fputs(word, file1);
	}

 

Você ainda pode testar se foi gravado pelo retorna da função fputs: Errado estão o while e o fgets

 

cout << "\n\nSeu nome é : " << word << "\n\n"; 
if (0  <  fputs (word, file1)){
      cout << "Arquivo recebeu nome!\n\n";
} else {
      cout << "Arquivo não recebeu nome!\n\n";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem vários problemas...

 

  1. Seu código está em C++ não em C# como indica o título do seu tópico.
  2. Está misturando bibliotecas do C (<stdio.h>, <stdlib.h>, <locale.h>, <ctype.h>)  com bibliotecas do C++ (<iostream>), quando programa em C++ use as bibliotecas do C++ (se vai usar bibliotecas do C++ que contém funções do C use <cstdio>, <cstdlib>, <clocale>, <cctype>, etc).
    Mas se vai preferir usar os recursos do C poderia programar em direto em C, ao invés de C++.
  3. O arquivo é aberto mas não é fechado com fclose(), então nada é escrito de fato no arquivo.
  4. Está usando funções do C quando existem recursos do próprio C++ para fazer a mesma coisa, e de maneira mais apropriada para o C++.

    Por exemplo:

 

  • Usou FILE * e fopen(), fgets() e fputs(), mas no C++ existe fstream e getline();
  • Usou gets() que jamais deve ser usado, mesmo no C, por ser uma função obsoleta que foi abandonada por não ser segura, mas poderia usar std::cin no C++.
  • Usou vetor de char mas poderia usar string no C++.
     

 

Veja o código usando os recursos do C++:

 

#include <iostream>
#include <fstream>
#include <clocale>
#include <string>
#include <cctype>

using namespace std;

int main()
{
    setlocale(LC_ALL,"portuguese");
    
    int i = 0;
    string word;
    
    fstream file1;
    file1.open("Arquivo2.txt", fstream::in | fstream::out | fstream::app);
    
    cout << "Insira seu nome : ";
    getline(cin, word);
    
    while(word[i] != '\0')
    {
        if(islower(word[0]))
        {
            word[0] = toupper(word[0]);
        }
        i++;
        if(i != 0)
        {
            word[i] = tolower(word[i]);
        }
    }
    
    cout << "\n\nSeu nome e' : " << word << "\n\n";
    
    file1 << word << "\n";
    
    file1.close();
    
    return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×