Jump to content
Sign in to follow this  
Cr4zYPT

Pergunta Basica

Recommended Posts

Cr4zYPT

Boas,

Estou a tentar ler um ficheiro mas por alguma razao ele para a meio

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Mail de Ofertas
</title>
    
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    
    
<meta name="ProgId" content="Word.Document" />
    

Faço um fread mas so le ate

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Mail de Ofertas
</title>
    
<meta http-equiv="Content-Type" content="text

Preciso de ajuda urgente

Share this post


Link to post
Share on other sites
Cr4zYPT

ja descobri.

O meu buffer era alocado dinamicamente.

A fgets e uma funçao antiga e para se detectar NULL no ficheiro.

Ao usar a funçao recomendada fgets_s

Funciona as mil maravilhas.

Cumpz,

Share this post


Link to post
Share on other sites
pmg

Ao usar a funçao recomendada fgets_s

Quem te recomendou a função fgets_s fazia melhor em estar calado. Essa função não está descrita nem no Standard do C, nem em POSIX, nem eu a encontro no MSDN! Usando-a estás a limitar muito o teu programa: ele só pode ser compilado/corrido em máquinas com Sistemas Operativos e bibliotecas onde exista essa mesma função (só a tua e a de quem recomendou???)

O meu conselho é que ponhas o fgets a funcionar. O fgets funciona muito bem com buffers alocados dinamicamente, mas, de facto, não com zeros embebidos. Se precisas de ler de um ficheiro binário usa a função fread.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Cr4zYPT

Estou no visual studio ele disse que fgets era perigosa e recomendou a fgets_s

Tipo mesmo usando o fread em binario nao consigo ler o ficheiro nao percebo

Share this post


Link to post
Share on other sites
pmg

Abriste o ficheiro em modo binário?

fopen("dados.bin", "rb")


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Cr4zYPT

         char mail[20000];
f2=fopen("mail.txt","rb");
fread(mail,1,20000,f2);

O ficheiro so tem 18036 chars

Share this post


Link to post
Share on other sites
pmg

Estou no visual studio ele disse que fgets era perigosa e recomendou a fgets_s

Não estás a confundir fgets com gets? (e fgets_s com gets_s?)

A função gets, é, de facto, perigosa e deve ser evitada (no próximo Standard de C ela deixa de existir). A função a usar em substituição deve ser fgets (e não, ao contrário do que diz a Microsoft, a gets_s).


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Cr4zYPT

Nao dá se alocares "manualmente" a memoria da string.

Se fizer codigo acima funciona.

Mas se fizeres

p2=(char *)malloc(20000);
fread(p2,1,20000,f2);

Ja nao funciona

Ja so le aquele bocado que esta no 1º post

Share this post


Link to post
Share on other sites
pmg

         char mail[20000];
f2=fopen("mail.txt","rb");
fread(mail,1,20000,f2);

O ficheiro so tem 18036 chars

Mas estás a programar em C (escolha do forum) ou em C++ (escolha da linguagem para o código)?

Eu não sei C++. Até alguém confirmar que o que eu disse se aplica a C++ ignora tudo o que eu disse; se estás a programar em C continua a ler.

Só te faltou guardar o valor de retorno do fread para saber quantos elementos foram lidos...

         char mail[20000];
f2=fopen("mail.txt","rb");
nelems = fread(mail,1,20000,f2);
        fclose(f2);
        zeros = 0;
        for (k = 0; k < nelems; k++) {
            if (mail[k] == 0) zeros++;
        }
        printf("O ficheiro tem %d NULLS\n", zeros);


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Cr4zYPT

Nao sei o que se passa para aki.

Estou a programar C e simplesmente queira ler um ficheiro que tem html para uma string.

o fread retornou 18030 e o contador de zeros acabou com um total de 18030.

A serio que nao percebo isto.

O tamanho total do ficheiro com o ftell e 18031

Share this post


Link to post
Share on other sites
pmg

o fread retornou 18030 e o contador de zeros acabou com um total de 18030.

Será que te enganaste no if e puseste só um igual?

        for (k = 0; k < nelems; k++) {
            if (mail[k] == 0) zeros++;
            //          ^^ dois iguais!
        }


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Cr4zYPT

copiei o teu codigo.

E simples se fizer um programa limpinho de novo isto funciona.

Mas no actual em que estou isto nao funciona nada.

deixo aqui meu codigo, atençao que e grandito.

Estou a usar visual c++ forms

#pragma once
#define _WIN32_WINNT 0x0501
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <dirent.h>
#include <Windows.h>
# include <Shellapi.h>
//#include "cencode.h"
//#include "decode.h"
//#include "encode.h"
#pragma comment(lib, "Ws2_32.lib")
#pragma comment(lib, "Shell32.lib")
#define PORT "25"
#define buf 1000

namespace cr4zy_mail {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

/// <summary>
/// Summary for Form1
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
	Form1(void)
	{
		InitializeComponent();
		//
		//TODO: Add the constructor code here
		//
	}

protected:
	/// <summary>
	/// Clean up any resources being used.
	/// </summary>
	~Form1()
	{
		if (components)
		{
			delete components;
		}
	}
private: System::Windows::Forms::Button^  button1;
protected: 
private: System::Windows::Forms::Button^  button2;
private: System::Windows::Forms::Button^  button3;
private: System::Windows::Forms::Label^  config_label_user;
private: System::Windows::Forms::TextBox^  config_email;
private: System::Windows::Forms::Label^  config_label_senha;
private: System::Windows::Forms::TextBox^  config_senha;
private: System::Windows::Forms::Label^  config_label_smtp;
private: System::Windows::Forms::TextBox^  config_smtp;
private: System::Windows::Forms::Button^  config_button;
private: System::Windows::Forms::Label^  config_help;

private: System::Windows::Forms::ListBox^  lista_contactos;
private: System::Windows::Forms::Button^  cont_carregar;
private: System::Windows::Forms::Button^  cont_procurar;
private: System::Windows::Forms::Button^  cont_adicionar;
private: System::Windows::Forms::Button^  cont_remover;
private: System::Windows::Forms::RichTextBox^  mail_body;
private: System::Windows::Forms::Button^  mail_enviar;
private: System::Windows::Forms::Button^  mail_preview;
private: System::Windows::Forms::Label^  assunto_label;
private: System::Windows::Forms::TextBox^  assunto;

private: System::Windows::Forms::Button^  cont_remove;
private: System::Windows::Forms::RichTextBox^  remove_box;



private:
	/// <summary>
	/// Required designer variable.
	/// </summary>
	System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
	/// <summary>
	/// Required method for Designer support - do not modify
	/// the contents of this method with the code editor.
	/// </summary>
	void InitializeComponent(void)
	{
		this->button1 = (gcnew System::Windows::Forms::Button());
		this->button2 = (gcnew System::Windows::Forms::Button());
		this->button3 = (gcnew System::Windows::Forms::Button());
		this->config_label_user = (gcnew System::Windows::Forms::Label());
		this->config_email = (gcnew System::Windows::Forms::TextBox());
		this->config_label_senha = (gcnew System::Windows::Forms::Label());
		this->config_senha = (gcnew System::Windows::Forms::TextBox());
		this->config_label_smtp = (gcnew System::Windows::Forms::Label());
		this->config_smtp = (gcnew System::Windows::Forms::TextBox());
		this->config_button = (gcnew System::Windows::Forms::Button());
		this->config_help = (gcnew System::Windows::Forms::Label());
		this->lista_contactos = (gcnew System::Windows::Forms::ListBox());
		this->cont_carregar = (gcnew System::Windows::Forms::Button());
		this->cont_procurar = (gcnew System::Windows::Forms::Button());
		this->cont_adicionar = (gcnew System::Windows::Forms::Button());
		this->cont_remover = (gcnew System::Windows::Forms::Button());
		this->mail_body = (gcnew System::Windows::Forms::RichTextBox());
		this->mail_enviar = (gcnew System::Windows::Forms::Button());
		this->mail_preview = (gcnew System::Windows::Forms::Button());
		this->assunto_label = (gcnew System::Windows::Forms::Label());
		this->assunto = (gcnew System::Windows::Forms::TextBox());
		this->cont_remove = (gcnew System::Windows::Forms::Button());
		this->remove_box = (gcnew System::Windows::Forms::RichTextBox());
		this->SuspendLayout();
		// 
		// button1
		// 
		this->button1->Location = System::Drawing::Point(12, 12);
		this->button1->Name = L"button1";
		this->button1->Size = System::Drawing::Size(117, 27);
		this->button1->TabIndex = 0;
		this->button1->Text = L"Enviar Mail";
		this->button1->UseVisualStyleBackColor = true;
		this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
		// 
		// button2
		// 
		this->button2->Location = System::Drawing::Point(192, 12);
		this->button2->Name = L"button2";
		this->button2->Size = System::Drawing::Size(117, 27);
		this->button2->TabIndex = 1;
		this->button2->Text = L"Configurações";
		this->button2->UseVisualStyleBackColor = true;
		this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
		// 
		// button3
		// 
		this->button3->Location = System::Drawing::Point(377, 12);
		this->button3->Name = L"button3";
		this->button3->Size = System::Drawing::Size(117, 27);
		this->button3->TabIndex = 2;
		this->button3->Text = L"Contactos";
		this->button3->UseVisualStyleBackColor = true;
		this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
		// 
		// config_label_user
		// 
		this->config_label_user->AutoSize = true;
		this->config_label_user->Location = System::Drawing::Point(12, 91);
		this->config_label_user->Name = L"config_label_user";
		this->config_label_user->Size = System::Drawing::Size(36, 13);
		this->config_label_user->TabIndex = 3;
		this->config_label_user->Text = L"E-Mail";
		this->config_label_user->Visible = false;
		// 
		// config_email
		// 
		this->config_email->Location = System::Drawing::Point(54, 88);
		this->config_email->Name = L"config_email";
		this->config_email->Size = System::Drawing::Size(175, 20);
		this->config_email->TabIndex = 4;
		this->config_email->Visible = false;
		// 
		// config_label_senha
		// 
		this->config_label_senha->AutoSize = true;
		this->config_label_senha->Location = System::Drawing::Point(7, 120);
		this->config_label_senha->Name = L"config_label_senha";
		this->config_label_senha->Size = System::Drawing::Size(41, 13);
		this->config_label_senha->TabIndex = 5;
		this->config_label_senha->Text = L"Senha:";
		this->config_label_senha->Visible = false;
		// 
		// config_senha
		// 
		this->config_senha->Location = System::Drawing::Point(54, 117);
		this->config_senha->Name = L"config_senha";
		this->config_senha->Size = System::Drawing::Size(175, 20);
		this->config_senha->TabIndex = 6;
		this->config_senha->Visible = false;
		// 
		// config_label_smtp
		// 
		this->config_label_smtp->AutoSize = true;
		this->config_label_smtp->Location = System::Drawing::Point(269, 91);
		this->config_label_smtp->Name = L"config_label_smtp";
		this->config_label_smtp->Size = System::Drawing::Size(40, 13);
		this->config_label_smtp->TabIndex = 7;
		this->config_label_smtp->Text = L"SMTP:";
		this->config_label_smtp->Visible = false;
		// 
		// config_smtp
		// 
		this->config_smtp->Location = System::Drawing::Point(315, 88);
		this->config_smtp->Name = L"config_smtp";
		this->config_smtp->Size = System::Drawing::Size(179, 20);
		this->config_smtp->TabIndex = 8;
		this->config_smtp->Visible = false;
		// 
		// config_button
		// 
		this->config_button->Location = System::Drawing::Point(315, 117);
		this->config_button->Name = L"config_button";
		this->config_button->Size = System::Drawing::Size(179, 23);
		this->config_button->TabIndex = 9;
		this->config_button->Text = L"Guardar";
		this->config_button->UseVisualStyleBackColor = true;
		this->config_button->Visible = false;
		this->config_button->Click += gcnew System::EventHandler(this, &Form1::config_button_Click);
		// 
		// config_help
		// 
		this->config_help->AutoSize = true;
		this->config_help->Location = System::Drawing::Point(12, 153);
		this->config_help->Name = L"config_help";
		this->config_help->Size = System::Drawing::Size(312, 13);
		this->config_help->TabIndex = 10;
		this->config_help->Text = L"So preencher SMTP se programa não detectar automaticamente";
		this->config_help->Visible = false;
		// 
		// lista_contactos
		// 
		this->lista_contactos->FormattingEnabled = true;
		this->lista_contactos->Location = System::Drawing::Point(10, 59);
		this->lista_contactos->Name = L"lista_contactos";
		this->lista_contactos->Size = System::Drawing::Size(330, 290);
		this->lista_contactos->TabIndex = 11;
		this->lista_contactos->Visible = false;
		// 
		// cont_carregar
		// 
		this->cont_carregar->Location = System::Drawing::Point(346, 59);
		this->cont_carregar->Name = L"cont_carregar";
		this->cont_carregar->Size = System::Drawing::Size(148, 33);
		this->cont_carregar->TabIndex = 12;
		this->cont_carregar->Text = L"Carregar lista de Contactos";
		this->cont_carregar->UseVisualStyleBackColor = true;
		this->cont_carregar->Visible = false;
		this->cont_carregar->Click += gcnew System::EventHandler(this, &Form1::cont_carregar_Click);
		// 
		// cont_procurar
		// 
		this->cont_procurar->Location = System::Drawing::Point(346, 98);
		this->cont_procurar->Name = L"cont_procurar";
		this->cont_procurar->Size = System::Drawing::Size(148, 35);
		this->cont_procurar->TabIndex = 13;
		this->cont_procurar->Text = L"Procurar Contacto";
		this->cont_procurar->UseMnemonic = false;
		this->cont_procurar->UseVisualStyleBackColor = true;
		this->cont_procurar->Visible = false;
		this->cont_procurar->Click += gcnew System::EventHandler(this, &Form1::cont_procurar_Click);
		// 
		// cont_adicionar
		// 
		this->cont_adicionar->Location = System::Drawing::Point(346, 143);
		this->cont_adicionar->Name = L"cont_adicionar";
		this->cont_adicionar->Size = System::Drawing::Size(148, 37);
		this->cont_adicionar->TabIndex = 14;
		this->cont_adicionar->Text = L"Adicionar Contactos";
		this->cont_adicionar->UseVisualStyleBackColor = true;
		this->cont_adicionar->Visible = false;
		this->cont_adicionar->Click += gcnew System::EventHandler(this, &Form1::cont_adicionar_Click);
		// 
		// cont_remover
		// 
		this->cont_remover->Location = System::Drawing::Point(346, 186);
		this->cont_remover->Name = L"cont_remover";
		this->cont_remover->Size = System::Drawing::Size(148, 37);
		this->cont_remover->TabIndex = 15;
		this->cont_remover->Text = L"Remover Contacto";
		this->cont_remover->UseVisualStyleBackColor = true;
		this->cont_remover->Visible = false;
		this->cont_remover->Click += gcnew System::EventHandler(this, &Form1::cont_remover_Click);
		// 
		// mail_body
		// 
		this->mail_body->Location = System::Drawing::Point(10, 88);
		this->mail_body->Name = L"mail_body";
		this->mail_body->Size = System::Drawing::Size(389, 260);
		this->mail_body->TabIndex = 16;
		this->mail_body->Text = L"";
		this->mail_body->Visible = false;
		// 
		// mail_enviar
		// 
		this->mail_enviar->Location = System::Drawing::Point(409, 95);
		this->mail_enviar->Name = L"mail_enviar";
		this->mail_enviar->Size = System::Drawing::Size(89, 62);
		this->mail_enviar->TabIndex = 17;
		this->mail_enviar->Text = L"Enviar";
		this->mail_enviar->UseVisualStyleBackColor = true;
		this->mail_enviar->Visible = false;
		this->mail_enviar->Click += gcnew System::EventHandler(this, &Form1::mail_enviar_Click);
		// 
		// mail_preview
		// 
		this->mail_preview->Location = System::Drawing::Point(409, 164);
		this->mail_preview->Name = L"mail_preview";
		this->mail_preview->Size = System::Drawing::Size(89, 59);
		this->mail_preview->TabIndex = 18;
		this->mail_preview->Text = L"Preview";
		this->mail_preview->UseVisualStyleBackColor = true;
		this->mail_preview->Visible = false;
		this->mail_preview->Click += gcnew System::EventHandler(this, &Form1::mail_preview_Click);
		// 
		// assunto_label
		// 
		this->assunto_label->AutoSize = true;
		this->assunto_label->Location = System::Drawing::Point(12, 66);
		this->assunto_label->Name = L"assunto_label";
		this->assunto_label->Size = System::Drawing::Size(48, 13);
		this->assunto_label->TabIndex = 19;
		this->assunto_label->Text = L"Assunto:";
		this->assunto_label->Visible = false;
		// 
		// assunto
		// 
		this->assunto->Location = System::Drawing::Point(66, 62);
		this->assunto->Name = L"assunto";
		this->assunto->Size = System::Drawing::Size(333, 20);
		this->assunto->TabIndex = 20;
		this->assunto->Visible = false;
		// 
		// cont_remove
		// 
		this->cont_remove->Location = System::Drawing::Point(258, 139);
		this->cont_remove->Name = L"cont_remove";
		this->cont_remove->Size = System::Drawing::Size(106, 41);
		this->cont_remove->TabIndex = 22;
		this->cont_remove->Text = L"Adicionar";
		this->cont_remove->TextImageRelation = System::Windows::Forms::TextImageRelation::ImageBeforeText;
		this->cont_remove->UseVisualStyleBackColor = true;
		this->cont_remove->Visible = false;
		this->cont_remove->Click += gcnew System::EventHandler(this, &Form1::cont_remove_Click);
		// 
		// remove_box
		// 
		this->remove_box->Location = System::Drawing::Point(25, 113);
		this->remove_box->Name = L"remove_box";
		this->remove_box->Size = System::Drawing::Size(227, 215);
		this->remove_box->TabIndex = 23;
		this->remove_box->Text = L"";
		this->remove_box->Visible = false;
		// 
		// Form1
		// 
		this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
		this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
		this->ClientSize = System::Drawing::Size(510, 364);
		this->Controls->Add(this->remove_box);
		this->Controls->Add(this->cont_remove);
		this->Controls->Add(this->assunto);
		this->Controls->Add(this->assunto_label);
		this->Controls->Add(this->mail_preview);
		this->Controls->Add(this->mail_enviar);
		this->Controls->Add(this->mail_body);
		this->Controls->Add(this->cont_remover);
		this->Controls->Add(this->cont_adicionar);
		this->Controls->Add(this->cont_procurar);
		this->Controls->Add(this->cont_carregar);
		this->Controls->Add(this->lista_contactos);
		this->Controls->Add(this->config_help);
		this->Controls->Add(this->config_button);
		this->Controls->Add(this->config_smtp);
		this->Controls->Add(this->config_label_smtp);
		this->Controls->Add(this->config_senha);
		this->Controls->Add(this->config_label_senha);
		this->Controls->Add(this->config_email);
		this->Controls->Add(this->config_label_user);
		this->Controls->Add(this->button3);
		this->Controls->Add(this->button2);
		this->Controls->Add(this->button1);
		this->Name = L"Form1";
		this->Text = L"Cr4zYPT Massive Mail Sender v1.0";
		this->ResumeLayout(false);
		this->PerformLayout();

	}
void erro(char *str)
{
String^ aux=gcnew String(str);
MessageBox::Show(this,aux);
return;
}
void grave(char *str)
{
String^ aux=gcnew String(str);
MessageBox::Show(this,aux);
exit(1);
}
char *str_to_char(String^ str)
{
char *novo;
int tamanho=str->Length,i;

novo=(char *)malloc(tamanho+1);

for (i=0;i<tamanho;i++)
	novo[i]==str[i];

novo[i]='\0';
return novo;
}
int count(char *str)
{
int i=0;
int j=0;

for(i=0;str[i]!='\0';i++)
{
	if(str[i]=='\n')
		j++;
}
return ++j;
}
#pragma endregion
private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
		 }
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
	 {
		 //esconde tudo
		 lista_contactos->Visible=false;
		 cont_adicionar->Visible=false;
		 cont_remover->Visible=false;
		 cont_procurar->Visible=false;
		 cont_carregar->Visible=false;
		 config_label_user->Visible=false;
		 config_label_senha->Visible=false;
		 config_help->Visible=false;
		 config_label_smtp->Visible=false;
		 config_email->Visible=false;
		 config_senha->Visible=false;
		 config_smtp->Visible=false;
		 config_button->Visible=false;
		 remove_box->Visible=false;
		 cont_remove->Visible=false;

		 //show buttons
		 mail_body->Visible=true;
		 mail_enviar->Visible=true;
		 mail_preview->Visible=true;	
		 assunto_label->Visible=true;
		 assunto->Visible=true;
	 }
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) 
	 {
		 FILE *f=fopen("config.dat","r");
		 char aux[100], *ptr;
		 String ^str;


		 if(f!=NULL)
		 {
			  fgets(aux,100,f);
    			  ptr=strchr(aux,'\n');
			  if(ptr!=NULL)
				 ptr[0]='\0';
			  str=gcnew String(aux);
			  config_email->Text=str;
			  fgets(aux,100,f);
    			  ptr=strchr(aux,'\n');
			  if(ptr!=NULL)
				 ptr[0]='\0';
			  str=gcnew String(aux);
			  config_senha->Text=str;
			  fgets(aux,100,f);
    			  ptr=strchr(aux,'\n');
			  if(ptr!=NULL)
				 ptr[0]='\0';
			  str=gcnew String(aux);
			  config_smtp->Text=str;
		 }
		 fclose(f);
		 //esconde tudo
		 lista_contactos->Visible=false;
		 cont_adicionar->Visible=false;
		 cont_remover->Visible=false;
		 cont_procurar->Visible=false;
		 cont_carregar->Visible=false;
		 config_label_user->Visible=false;
		 config_label_senha->Visible=false;
		 config_help->Visible=false;
		 config_label_smtp->Visible=false;
		 config_email->Visible=false;
		 config_senha->Visible=false;
		 config_smtp->Visible=false;
		 config_button->Visible=false;
		 mail_body->Visible=false;
		 mail_enviar->Visible=false;
		 mail_preview->Visible=false;
		 assunto_label->Visible=false;
		 assunto->Visible=false;
		 remove_box->Visible=false;
		 cont_remove->Visible=false;

		 //show buttons
		 config_label_user->Visible=true;
		 config_label_senha->Visible=true;
		 config_help->Visible=true;
		 config_label_smtp->Visible=true;
		 config_email->Visible=true;
		 config_senha->Visible=true;
		 config_smtp->Visible=true;
		 config_button->Visible=true;




	 }
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) 
	 {
		 //esconde tudo
		 config_label_user->Visible=false;
		 config_label_senha->Visible=false;
		 config_help->Visible=false;
		 config_label_smtp->Visible=false;
		 config_email->Visible=false;
		 config_senha->Visible=false;
		 config_smtp->Visible=false;
		 config_button->Visible=false;
		 mail_body->Visible=false;
		 mail_enviar->Visible=false;
		 mail_preview->Visible=false;
		 lista_contactos->Visible=false;
		 cont_adicionar->Visible=false;
		 cont_remover->Visible=false;
		 cont_procurar->Visible=false;
		 cont_carregar->Visible=false;
		 assunto_label->Visible=false;
		 assunto->Visible=false;
		 remove_box->Visible=false;
		 cont_remove->Visible=false;

		 //show buttons
		 lista_contactos->Visible=true;
		 cont_carregar->Visible=true;
		 cont_adicionar->Visible=true;
		 cont_remover->Visible=true;
		 cont_procurar->Visible=true;

	 }
private: System::Void mail_enviar_Click(System::Object^  sender, System::EventArgs^  e) 
	 {

	 }
private: System::Void mail_preview_Click(System::Object^  sender, System::EventArgs^  e) 
	 {
		 FILE *f=fopen("config.dat","r");
		 FILE *f2=fopen("mail.txt","r");
		 	WSADATA wsadata;
			struct addrinfo *result =NULL, *pt=NULL, hints;
			char aux[100000],*ptr, smtp[100],user[100],pass[100],buffer[buf],preview[100];
			SOCKET sock;
			char *assun,a[100000];
			char mail[100000], m2[100000],*p2;
			String^ str;
			int tester,tamanho;

//vai buscar server
fgets(aux,1000,f);
fgets(aux,1000,f);
fgets(aux,1000,f);
ptr=strchr(aux,'\n');
if(ptr!=NULL)
	ptr[0]='\0';
strcpy(smtp,aux);

//vai buscar user
fgets(aux,1000,f);
//ptr=strchr(aux,'\n');
//if(ptr!=NULL)
//	ptr[0]='\0';
strcpy(user,aux);

//vai buscar pass
fgets(aux,1000,f);
//ptr=strchr(aux,'\n');
//if(ptr!=NULL)
//	ptr[0]='\0';
strcpy(pass,aux);

//vai buscar mail
fgets(aux,1000,f);
ptr=strchr(aux,'\n');
if(ptr!=NULL)
	ptr[0]='\0';
strcpy(preview,aux);

str=assunto->Text;
assun=str_to_char(str);
str=mail_body->Text;
//mail=str_to_char(str);
//CString str3(str);

			//inicializa wsa
			tester=WSAStartup(MAKEWORD(2,2), &wsadata);
			if(tester!=0)
				erro("Erro ao iniciar WSA");

//inicializa estrutura
ZeroMemory(&hints,sizeof(hints));
    hints.ai_family=AF_UNSPEC;
    hints.ai_socktype=SOCK_STREAM;
    hints.ai_protocol=IPPROTO_TCP;

//resolve o host
    tester=getaddrinfo(smtp, PORT,&hints,&result);
if(tester!=0)
	erro("Erro ao resolver host");

pt=result;
//associa o socket
    sock=socket(pt->ai_family,pt->ai_socktype,pt->ai_protocol);
    if (sock==INVALID_SOCKET)
	erro("Erro ao inicializar o socket");

//conect a um socket
    tester=connect(sock,pt->ai_addr,(int)pt->ai_addrlen);
    if(tester==SOCKET_ERROR)
	erro("Host nao encontrado");

freeaddrinfo(result);


fseek ( f2 , 1 , SEEK_END );
tamanho=ftell(f2);
rewind(f2);
fclose(f2);
int nelems,zeros,k;
f2=fopen("mail.txt","r");

p2=(char *)malloc(20000);
nelems=fread(p2,1,tamanho,f2);
p2[tamanho]='\0';

 fclose(f2);
     zeros = 0;
     for (k = 0; k < nelems; k++) 
 {
            if (mail[k] == 0) 
			zeros++;
     }
 zeros;







strcpy(a,"EHLO\r\n");
tester=send(sock,a,strlen(a),0);
tester=recv(sock,buffer,buf,0);

tester=send(sock,"auth login\n",11,0);
tester=recv(sock,buffer,buf,0);

tester=send(sock,user,strlen(user),0);
tester=recv(sock,buffer,buf,0);

tester=send(sock,pass,strlen(pass),0);
tester=recv(sock,buffer,buf,0);

tester=send(sock,"MAIL FROM:\n",11,0);
tester=recv(sock,buffer,buf,0);

tester=send(sock,"RCPT TO: cr4zypt@gmail.com\n",27,0);
tester=recv(sock,buffer,buf,0);

tester=send(sock,"DATA\n",5,0);
tester=recv(sock,buffer,buf,0);

sprintf(aux,"Subject: %s\n",assun);
tester=send(sock,aux,strlen(aux),0);
//tester=recv(sock,buffer,buf,0);
sprintf(aux,"From: Marao Tamega  eduarda.teixeira@maraotamega.pt\n");
tester=send(sock,aux,strlen(aux),0);
//tester=recv(sock,buffer,buf,0);
sprintf(aux,"To: Estimado Cliente\n");
tester=send(sock,aux,strlen(aux),0);
//tester=recv(sock,buffer,buf,0);

sprintf(aux,"Mime-Version: 1.0;\nContent-Type: text/html;\n%s\n.\n",m2);
tester=send(sock,aux,strlen(aux),0);
tester=recv(sock,buffer,buf,0);

erro("Enviado com sucesso");

	 }
private: System::Void cont_carregar_Click(System::Object^  sender, System::EventArgs^  e) 
	 {
		 FILE *f;
		 char aux[100], *str_ptr;

		 f=fopen("contactos.dat","r");
		 if(f==NULL)
			 erro("Ficheiro de Contactos não encontrado");

		 while(fgets(aux,1000,f)!=NULL)
		 {
			 str_ptr=strchr(aux,'\n');
			 str_ptr[0]='\0';
			 String^ str=gcnew String(aux);
			 lista_contactos->Items->Add( String::Format(str) );
		 }
		 lista_contactos->Refresh();
		 fclose(f);
	 }
private: System::Void cont_procurar_Click(System::Object^  sender, System::EventArgs^  e) 
	 {

	 }
private: System::Void cont_adicionar_Click(System::Object^  sender, System::EventArgs^  e) 
	 {
		 //hide
		 config_label_user->Visible=false;
		 config_label_senha->Visible=false;
		 config_help->Visible=false;
		 config_label_smtp->Visible=false;
		 config_email->Visible=false;
		 config_senha->Visible=false;
		 config_smtp->Visible=false;
		 config_button->Visible=false;
		 mail_body->Visible=false;
		 mail_enviar->Visible=false;
		 mail_preview->Visible=false;
		 lista_contactos->Visible=false;
		 cont_adicionar->Visible=false;
		 cont_remover->Visible=false;
		 cont_procurar->Visible=false;
		 cont_carregar->Visible=false;
		 assunto_label->Visible=false;
		 assunto->Visible=false;
		 remove_box->Visible=false;
		 cont_remove->Visible=false;



		 //show
		 remove_box->Visible=true;
		 cont_remove->Visible=true;


	 }
private: System::Void cont_remover_Click(System::Object^  sender, System::EventArgs^  e) 
	 {

	 }
private: System::Void config_button_Click(System::Object^  sender, System::EventArgs^  e) 
	 {

	 }
private: System::Void cont_remove_Click(System::Object^  sender, System::EventArgs^  e) 
	 {
		 FILE *f;
		 String ^ str;
		 char **novo, *ptr, *pt2, aux[100];
		 int tamanho,i=0;
		 char **antigo;


		 f=fopen("contactos.dat","r");
		 if(f==NULL)
			 grave("Ficheiro de contactos não encontrado");
		 str=remove_box->Text;
		 ptr=str_to_char(str);

		 //prepara memoria
		 tamanho=count(ptr);
		 novo=(char **)malloc(tamanho*sizeof(char*));
		 //copia
		 pt2=strtok(ptr,"\n");
		 novo[0]=(char *)malloc(strlen(pt2));
		 strcpy(novo[0],pt2);

		 for(i=1;i<tamanho;i++)
		 {
			 pt2=strtok(NULL,"\n");
			 novo[i]=(char *)malloc(strlen(pt2));
			 strcpy(novo[i],pt2);
		 }

		 tamanho=0;
		 while(fgets(aux,100,f)!=NULL)
			tamanho++;

		 rewind(f);

		 //prepara memoria antigos
		 antigo=(char **)malloc(tamanho*sizeof(char*));

		 i=0;
		 while(fgets(aux,100,f)!=NULL)
		 {
			 novo[i]=(char *)malloc(strlen(aux));
			 strcpy(novo[i],pt2);
			 i++;
		 }

		 //retira os duplicados
		 //tamanho=base64_encode_block("19691992",8,ptr,st);


	 }
};
}

Share this post


Link to post
Share on other sites
pmg

Isto não é, nem de perto nem de longe, C.

Até alguém confirmar que o que eu disse atrás se aplica à linguagem que estás a usar, ignora o que eu disse.

Se efectivamente estás a trabalhar em C, aumenta o nível de warnings do teu compilador e não deixes ficar warnings "pendurados" depois de cada compilação.

------------------------------------------------------------------

Estás a ler para p2 e a testar mail ...

        nelems=fread(p2,1,tamanho,f2);
        p2[tamanho]='\0';

         fclose(f2);
     zeros = 0;
     for (k = 0; k < nelems; k++)
         {
            if (mail[k] == 0)
                                zeros++;
     }


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Cr4zYPT

A parte do codigo geral e C++ (acho eu) o resto, o codigo em cada botão e assim é uma mistura de C com C++, mas o codigo de ler ficheiros e gaurdar para string e C

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.