WinFuture-Forum.de: Probleme Mit Array Und Ausgabe - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Probleme Mit Array Und Ausgabe C++


#1 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 11. Juni 2007 - 19:32

Hi,

vor einer ganzen weile , hatte ich mal ein programm geschrieben, welches innherlab von 63 sek. einen 63 zeichen langen wpa key liefert.

jetzt hab ich mich nochmal dran gesetzt (vorweigend aus langeweile ;D ) und wollte den key automatisch in ner textdatei speicher.

erstmal zum code:
/---------------------------------------------------------------------------
  
  #pragma hdrstop
  
  //---------------------------------------------------------------------------
  
  #pragma argsused
  #include <iostream>
  #include <conio>
  #include "untZahlenAuswerten.h"
  #include <stdlib>
  #include <windows>
  #include <String>
  
  
  using namespace std;
  
  void main()
  {
	   cout <<"**********************************************
***********************"<< endl;
	   cout <<"Dies ist ein Programm um einen Schluessel fuer ein kabeloses Netzwerk"<< endl;
	   cout <<"mit WPA2-Verschluesselung zu generieren." << endl;
	   cout <<"**********************************************
***********************"<< endl;
  
	   cout <<"Diese Programm steht unter der GNU GPL"<< endl;
  
	   cout <<"**********************************************
***********************"<< endl;
	   cout <<"**********************************************
***********************"<< endl;
	   cout << endl;
	   cout << endl;
	   CZahlenauswerten Werte;
	   cout <<"WPA-Schluessel:"<<endl;
	   cout << endl;
	   char Zeichen[58];
	   char Save[63];
	   string Key;
  
	   for(int i = 1;i <= 63; i++)
	   {
			   Zeichen[i] = Werte.mZeichenausgeben();
  
			   cout << Zeichen[i];
  
			   int Zaehler;
			   Zaehler ++;
			   if(Zaehler == 62)
			   {
				   Key = Save[0] + Save[1] + Save[2] + Save[3] + Save[4] + Save[5] + Save[6] + Save[7] +
						 Save[8] + Save[9] + Save[10] + Save[11] + Save[12] + Save[13] + Save[14] + Save[15] +
						 Save[16] + Save[17] + Save[18] + Save[19] + Save[20] + Save[21] + Save[22] + Save[23] +
						 Save[24] + Save[25] + Save[26] + Save[27] + Save[28] + Save[29] + Save[30] + Save[31] +
						 Save[32] + Save[33] + Save[34] + Save[35] + Save[36] + Save[37] + Save[38] + Save[39] +
						 Save[40] + Save[41] + Save[42] + Save[43] + Save[44] + Save[45] + Save[46] + Save[47] +
						 Save[48] + Save[49] + Save[50] + Save[51] + Save[52] + Save[53] + Save[54] + Save[55] +
						 Save[56] + Save[57] + Save[58] + Save[59] + Save[60] + Save[61] + Save[62] + Save[63];
  
						 cout << Key;
			   }
			   Sleep(1000);
	   }
  
	   cout << endl;
	   cout << endl;
	   cout <<"Zum beenden beliebige Taste druecken"<< endl;
  
	   getch();
  }
  //---------------------------------------------------------------------------


in der forschleife sieht man jetzt, das ich eine Variable angelegt habe names "Key", diese Variable soll eiegntlich alle 63 zeichen enthalten, und wen ich nun diese variable per cout ausgeben will passiert nichts (siehe screenshot).

Eingefügtes Bild

nun frage ich mich, wie ich es sonst lösen könnte, und die ganzen zeichen in einer varibale speichern kann, bzw. wo der fehler bei meiner varinate liegt.

mit dem cout befehl wollte ich erstmal testen ob es funktioniert und mich dann an die Speicherung machen.

hab den komplett quellcode angehängt.

als ide hab ich den c++ borland builder 5 verwendet.

vielen dank schonmal im vorraus!

EDIT: falls es jemand interessiert hier mal der link zum alten thread: LINK

mfg
Fabi

Angehängte Datei(en)

  • Angehängte Datei  test.zip (103,7K)
    Anzahl der Downloads: 202

Dieser Beitrag wurde von Fabi bearbeitet: 11. Juni 2007 - 21:13

0

Anzeige



#2 _deen_

  • Gruppe: Gäste

geschrieben 11. Juni 2007 - 21:54

Du speicherst die Zeichen ja auch nicht in deinen Save-String, was soll der da ausgeben? Habe jetzt zwar nichts zum testen, so sollte es aber funktionieren:
	   for(int i = 1;i <= 63; i++)
	   {
			   Zeichen[i] = Werte.mZeichenausgeben();
 
			   cout << Zeichen[i];
			   Key += Zeichen[i];  

			   Sleep(1000);
	   }
	   cout << endl << Key << endl << endl
			  <<"Zum beenden beliebige Taste druecken" << endl;
	   getch();
}

0

#3 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 12. Juni 2007 - 12:46

vielen dank, jetzt funktioniert es.

hab aber jetzt mal noch einige fragen dazu und zwar wo ist der Unterschied zwischen diesem hier:
 
 int Zaehler;
 Zaehler ++;
			  if(Zaehler == 63)
			 {			 
			 Key = Save[0] + Save[1] + Save[2] + Save[3] + Save[4] + Save[5] + Save[6] + Save[7] +
						Save[8] + Save[9] + Save[10] + Save[11] + Save[12] + Save[13] + Save[14] + Save[15] +
						Save[16] + Save[17] + Save[18] + Save[19] + Save[20] + Save[21] + Save[22] + Save[23] +
						Save[24] + Save[25] + Save[26] + Save[27] + Save[28] + Save[29] + Save[30] + Save[31] +
						Save[32] + Save[33] + Save[34] + Save[35] + Save[36] + Save[37] + Save[38] + Save[39] +
						Save[40] + Save[41] + Save[42] + Save[43] + Save[44] + Save[45] + Save[46] + Save[47] +
						Save[48] + Save[49] + Save[50] + Save[51] + Save[52] + Save[53] + Save[54] + Save[55] +
						Save[56] + Save[57] + Save[58] + Save[59] + Save[60] + Save[61] + Save[62] + Save[63];
 }


und deinem:
 Key += Zeichen[i];


das versthe ich nicht ganz.

er hat doch die ganzen werte in dem array gespeichert, und ich mach die zusammendfassung in dem array key halt etwas umständlicher als du, ist doch aber im endeffekt das gleiche...oder nicht?

mfg
Fabi

Dieser Beitrag wurde von Fabi bearbeitet: 12. Juni 2007 - 12:59

0

#4 _deen_

  • Gruppe: Gäste

geschrieben 12. Juni 2007 - 20:52

Nein, wie schon gesagt: Dein Array "Save" füllst du gar nicht mit Zeichen, daher könntest du statt "Key = Save[0] + Save[1] + Save[2] + Save[3] ..." "Key = Zeichen[0] + Zeichen[1] + Zeichen[2] + Zeichen[3] ...". "Save" hat irgendwie keinen Sinn. :rolleyes:
0

#5 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 12. Juni 2007 - 22:48

Was mein Compiler noch auszusetzen hatte:
- die Header heißen conio.h, windows.h und stdlib.h
- der Rückgabewert der main()-Funktion ist int
:rolleyes:
0

#6 _deen_

  • Gruppe: Gäste

geschrieben 12. Juni 2007 - 22:59

Beitrag anzeigenZitat (Der Kenner: 12.06.2007, 23:48)

die Header heißen conio.h, windows.h und stdlib[b].h

Compilerabhängig.
0

#7 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 13. Juni 2007 - 09:13

@Der Kenner: wie deen schon sagte, sind das compiler abhängige sachen, wie in meinem ersten post geschrieben, verwende ich den Borland compiler.

mfg
Fabi
0

#8 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 13. Juni 2007 - 15:49

Hm ok, wenn die Header auch anders eingebunden werden können...
Aber main() hat definitiv den Rückgabewert int.
0

#9 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 13. Juni 2007 - 19:40

Nein hat es nicht!

void main()
   {
   // dein code
   
   getch()
   }


funktioniert!

das ist auch wieder kompiler abhängig!

Du kannst dir ja mal auf der borland homepage den Borland compiler runterladen (kostenlos) und es testen! Außerdem funktioniertr das Programm ja!

mfg
Fabi

EDIT: So hab das ganze jetzt nochmal ein bisschen aufgepeppt, jetzt kann man den Key auch speichern.

//---------------------------------------------------------------------------
  
  #pragma hdrstop
  
  //---------------------------------------------------------------------------
  
  #pragma argsused
  #include <iostream>
  #include <conio>
  #include "untZahlenAuswerten.h"
  #include <stdlib>
  #include <windows>
  #include <String>
  #include <fstream>
  
  
  using namespace std;
  
  void main()
  {
	   cout <<"**********************************************
***********************"<< endl;
	   cout <<"Dies ist ein Programm um einen Schluessel fuer ein kabeloses Netzwerk"<< endl;
	   cout <<"mit WPA2-Verschluesselung zu generieren." << endl;
	   cout <<"dauer ca. 63 sek." << endl;
	   cout <<"**********************************************
***********************"<< endl;
  
	   cout <<"Diese Programm steht unter der GNU GPL"<< endl;
  
	   cout <<"**********************************************
***********************"<< endl;
	   cout <<"**********************************************
***********************"<< endl;
	   cout << endl;
	   cout << endl;
	   CZahlenauswerten Werte;
	   cout <<"WPA-Schluessel:"<<endl;
	   cout << endl;
	   char Zeichen[58];
	   string Key;
  
	   for(int i = 1;i <= 63; i++)
	   {
			   Zeichen[i] = Werte.mZeichenausgeben();
  
				 cout << Zeichen[i];	
  
			   Key += Zeichen[i];
			   Sleep(1000);
	   }
	   cout << endl;
	   cout << endl;
  
	   cout << "Moechten Sie den generierten Key speichern? j / n  ";
	   char Antwort;
	   cin >> Antwort;
  
	   cout << endl;
  
	   if(Antwort == 'J' || Antwort == 'j' || Antwort == 'N' || Antwort == 'n')
	   {
				  if(Antwort == 'J' || Antwort == 'j')
				  {
							 ofstream WPAKey;
						 WPAKey.open("Key.txt", ios_base::out);
						 WPAKey << Key;
							 WPAKey.close();
  
							 cout << "Der Schluessel wurde als 'Key.txt' gespeichert"<< endl;
				  }
  
  
  
	   }
	   else
	   {
			 cout << "Falsche Eingabe! Programm wird beendet!" << endl;
	   }
  
  
	   cout <<"Zum beenden beliebige Taste druecken"<< endl;
  
	   getch();
  }
  //---------------------------------------------------------------------------


jetzt speichert er den Key als Key.txt, leider speicert er ihn nur in den ordner in dem die *.exe datei liegt, gibt es eine möglichkeite, dass der Key direkt auf den Desktop oder in die eigenen Dateien gespeichert wird?

Die source + exe befindet sich im Ahnhang!

mfg
Fabi

Angehängte Datei(en)

  • Angehängte Datei  test.zip (111,06K)
    Anzahl der Downloads: 94

Dieser Beitrag wurde von Fabi bearbeitet: 13. Juni 2007 - 19:50

0

#10 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 13. Juni 2007 - 21:31

Ich will nicht kleinlich sein :D , aber C++-ISO-Def. 3.6.1 Main Function 2: "It shall have a return type of type int [...]"

EDIT: http://www.research.....html#void-main
Lies den Abschnitt. Dann verstehst du auch, warum void main() nicht geht. Die Standardisierung durch die ISO bzw. ihre Unterorganisationen (bspw. DIN) ist ja auch ein Vorteil von C++: Der Code muss nicht an den jeweiligen Compiler angepasst werden, sondern die Compiler halten sich einfach an den Standard.

Dieser Beitrag wurde von Der Kenner bearbeitet: 13. Juni 2007 - 23:22

0

#11 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 13. Juni 2007 - 22:32

mann o mann...die gibts auch nie auf! ;)

lad die doch einfach das programm runter, und teste die wpa.exe, du wirst sehen das es funktioniert, Borland hat den teil mit der void funktion halt etwas anders geregelt!

kannst das ding ja so umschreiben, das es nen int wert zurück gibt!

bzw. werd ich das bei gelegenheit für DICH machen, damit DU auch noch zufrieden bist! :D

mfg
Fabi

EDIT: So @ DerKenner, jetzt hab ich noch kurz für DICH extra ne version gemacht, bei der die main funktuion nicht void sondern int ist!

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <iostream>
#include <conio>
#include "untZahlenAuswerten.h"
#include <stdlib>
#include <windows>
#include <String>
#include <fstream>


using namespace std;

int main()
{
	 cout <<"**********************************************
***********************"<< endl;
	 cout <<"Dies ist ein Programm um einen Schluessel fuer ein kabeloses Netzwerk"<< endl;
	 cout <<"mit WPA2-Verschluesselung zu generieren." << endl;
	 cout <<"dauer ca. 63 sek." << endl;
	 cout <<"**********************************************
***********************"<< endl;

	 cout <<"Diese Programm steht unter der GNU GPL"<< endl;

	 cout <<"**********************************************
***********************"<< endl;
	 cout <<"**********************************************
***********************"<< endl;
	 cout << endl;
	 cout << endl;
	 CZahlenauswerten Werte;
	 cout <<"WPA-Schluessel:"<<endl;
	 cout << endl;
	 char Zeichen[58];
	 string Key;

	 for(int i = 1;i <= 63; i++)
	 {
			 Zeichen[i] = Werte.mZeichenausgeben();

			   cout << Zeichen[i];	

			 Key += Zeichen[i];
			 Sleep(1000);
	 }
	 cout << endl;
	 cout << endl;

	 cout << "Moechten Sie den generierten Key speichern? j / n  ";
	 char Antwort;
	 cin >> Antwort;

	 cout << endl;

	 if(Antwort == 'J' || Antwort == 'j' || Antwort == 'N' || Antwort == 'n')
	 {
				if(Antwort == 'J' || Antwort == 'j')
				{
						   ofstream WPAKey;
					   WPAKey.open("Key.txt", ios_base::out);
					   WPAKey << Key;
						   WPAKey.close();

						   cout << "Der Schluessel wurde als 'Key.txt' gespeichert"<< endl;
				}



	 }
	 else
	 {
		   cout << "Falsche Eingabe! Programm wird beendet!" << endl;
	 }


	 cout <<"Zum beenden beliebige Taste druecken"<< endl;

	 getch();

	 return 0;
}
//---------------------------------------------------------------------------


und es funktioniert auch! ;)

mfg
Fabi

Angehängte Datei(en)


Dieser Beitrag wurde von Fabi bearbeitet: 14. Juni 2007 - 09:29

0

#12 _deen_

  • Gruppe: Gäste

geschrieben 15. Juni 2007 - 21:22

Beitrag anzeigenZitat (Fabi: 13.06.2007, 23:32)

Borland hat den teil mit der void funktion halt etwas anders geregelt!

Das ändert nichts an der Tatsache, dass es "void main" in C++ falsch ist. Es gibt nicht umsonst Standards...
0

#13 _MagicAndre1981_

  • Gruppe: Gäste

geschrieben 15. Juni 2007 - 21:28

Der Borland/Codegear C++ Builder ist bekannt dafür, dass er sich nicht gerade an Standards hält.
0

#14 _deen_

  • Gruppe: Gäste

geschrieben 15. Juni 2007 - 22:31

Dennoch funktionieren afaik alle C++-Standards, er toleriert nur ziemlich viel Falsches.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0