Ir ao conteúdo

Posts recomendados

Postado

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;
}

 

 

Postado
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";
}
Postado

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!