Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » einzelne Zeichen einer Zeichenkette austauschen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
06.04.2004, 23:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


na dann funktioniert doch der code den ich dir gepostet habe...
ist doch genau das was du haben willst...
das einzige was mein code macht ist nur zahlen von 0-9 zu nehmen...

wenn du da noch andere zeichen drin haben willlst müsstest du mal sagen genau welche ausser zahlen und buchstaben
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
06.04.2004, 23:39 Uhr
Meuterich



meinst du den:
srand(time(NULL));
std::string zeichenkette;
for(int i=0;i<Laenge;++i)zeichenkette+=48+rand()%10;
Form1 -> Edit1 -> Text = zeichenkette.c_str();

falls ja versteh ich den nich *g*

hab so langsamm das gefuehl das ich mich mit meinem wissen da uebernehme

ich dachte nen passwortgenerator waere ne einfache einsteigermoeglichkeit,
quasi toll zum ueben aber so langsamm hab ich das gegenteilige gefuehl

naja aber trotzdem danke fuer deine hilfe..werde dann dochmal noch nen paar
buecher lesen muessen

bis denn

Meuterich
--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
06.04.2004, 23:40 Uhr
Meuterich



achso...ausser zahlen und buchstaben moechte ich SonderZeichen noch drinne
haben, also !"§$%&/()=?\/*-+@ waere schon mal nen anfang

bis denn

Meuterich
--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
06.04.2004, 23:47 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


probier mal das hier zu kompilieren

C++:
#include <iostream>
#include <string>
#include <ctime>

int main(){
int laenge=10;//anzahl an zeichen
srand(time(NULL));//zufallsgenerator initialisieren
std::string zeichenkette; //variable die die zeichen aufnimmt
for(int i=0;i<laenge;++i)zeichenkette+=32+rand()%96; //laenge mal ein zufallszeichen erzeugen
std::cout<<"zufallsPasswort ist: "<<zeichenkette<<std::endl; //ausgeben des zufallspasswortes
}



dann wirds dir vielleicht klarer
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
08.04.2004, 19:24 Uhr
Meuterich



hi,

der gibt mir da ne menge fehlermeldungen:


ich hab den C++Builder 1.x von Borland..leigt vielleicht daran? naja egal,
ich glaube ich geb das erstmal auf und lerne noch nen bisgen weiter,
sonst krieg ich noch nen anfall

aber trotzdem danke fuer deine hilfe

bis denne

Meuterich
--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.

Dieser Post wurde am 08.04.2004 um 19:25 Uhr von Meuterich editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
08.04.2004, 19:46 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hmm na dann probier mal so das hier sollte der eigentlich fressen...

C++:
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#include <time.h>

int main(){
char *zeichenkette,zeichenarray[]={'@','&','1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y'};
int i,laenge=10;
zeichenkette=(char*)malloc((laenge+1)*sizeof(char));
srand(time(NULL));
for(i=0;i<laenge;++i)zeichenkette[i]=zeichenarray[rand()%sizeof(zeichenarray)];
zeichenkette[i]='\0';
printf("Zufallspasswort ist:%s\n",zeichenkette);
free(zeichenkette);
}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
09.04.2004, 00:47 Uhr
Meuterich



hi,

jo nun funzt
versteh zwar noch nicht alles dadrin aber das laest sich aendern-> lesen und lernen *g*

habs dann nur noch fuer mich 'angepasst':

C++:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
zeichenkette=(char*)malloc((laenge+1)*sizeof(char));
srand(time(NULL));
for(i=0;i<laenge;++i)zeichenkette[ i ]=zeichenarray[rand()%sizeof(zeichenarray)];
zeichenkette[ i ]='\0';
Edit1->Text=("Zufallspasswort ist:%s\n",zeichenkette);
free(zeichenkette);
}



aber das ist schon mal was, damit kann ich mal weiterschauen...kannst du mir
vielleicht noch nen blutigerAnfaengerBuch empfehlen?
bis denn und besten dank

Meuterich
--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
09.04.2004, 00:51 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

noch nen blutigerAnfaengerBuch empfehlen?



leider nein.. hab selber bisher noch nie ein Programmierbuch gelesen... hab das alles durch ausprobieren, fragen im Forum und Tutorials aus dem Netz gemacht..
hab mir zwar jetzt mein erstes C++-Buch von Ebay ersteigert. Bin aber noch nicht zugekommen das zu lesen... Aber wenn der Hans hier mal vorbeischaut kann der dir bestimmt gleich ne ganze Latte empfehlen


Zitat:

versteh zwar noch nicht alles dadrin


was verstehst du denn nicht?
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 09.04.2004 um 00:52 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
09.04.2004, 02:10 Uhr
Meuterich



diese zeile:
-> zeichenkette=(char*)malloc((laenge+1)*sizeof(char));
klar zeichenkette ist ne variable oder? aber der rest??

-> srand(time(NULL));
also srand hab ich rausgefunden ist nen zufallsgenerator, und das mit dem
time weis ich nicht warum das da drinne ist, nur hat was mit der systemzeit
zu tun, ich denke mal das liegt daran das die syszeit als basis fuer den srand
diehnt, denn nen zufallsgenerator brauch intern immer irgendwelche werte von
denen er ausgeht um zufallswerte zu ermitteln und am einfachsten ist es da die
syszeit zu nehemen da die immer anders ist bzw. meistens.
soweit richtig?

-> for(i=0;i<laenge;++i)zeichenkette[ i ]=zeichenarray[rand()%sizeof(zeichenarray)];
ne forschleife, ok, warum eigentlich ++i und nicht i++ ? und dann zeichenarray[rand(...]

-> zeichenkette[ i ]='\0';
wie hab ich das \0 zu verstehen?

-> Edit1->Text=("Zufallspasswort ist:%s\n",zeichenkette);
ok das edit1 hab ich selber getippert *g* aber %s\n bin ich nicht sicher was das ist

-> free(zeichenkette);
free...hm...ist das dafuer um die zeichenkette wieder zu leeren?



--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
09.04.2004, 12:17 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

diese zeile:
-> zeichenkette=(char*)malloc((laenge+1)*sizeof(char));
klar zeichenkette ist ne variable oder? aber der rest??


wenn die länge deiner zeichenkette konstant ist würde es reichen einfach
zeichenkette[lange+1] zuverwenden...
das +1 weil strings in c immer am ende ein Nullbyte haben müssen...
da ich nicht wusste ob bei dir die länge variable sein kann hab ich malloc gewählt weil du damit speicherbereich in der grösse anfordern kannst wie du ihn brauchst... wenn sich z.b. die länge vergrössert deines Programmablaufs ändern müsstest du ja auch ggf. ein grösseres array zur verfügung stellen

das free ist dann dazu da den speicher wieder freizugeben...
eventuell gibts beim borlandbuilder auch schon ne fertige klasse die das für dich übernimmt, weiss ich aber nicht ich kenn mich mit borlandspezifischen sachen nicht aus


Zitat:

-> srand(time(NULL));


jo ist nur zum initialisieren des Zufallsgenerators und die systemzeit eigenet sich recht gut dafür


Zitat:

-> for(i=0;i<laenge;++i)zeichenkette[ i ]=zeichenarray[rand()%sizeof(zeichenarray)];
ne forschleife, ok, warum eigentlich ++i und nicht i++ ? und dann zeichenarray[rand(...]


ob ++i oder i++ spielt in diesem fall keien rolle man sollte sich aber angewöhnen ++i zu verwenden und das postinkrement nur dann zu nutzen wenn man es wirklich braucht (ist erstmal auch nicht so wichtig)...

der spass hier macht nichts anderes als jedem zeichen deines zufallswortes ein zeichen aus dem von dir vorher definierten zeichenarray zuzuweisen... also wenn du noch ne Klammer auf mit in die erlaubten symbole haben willst dann halt die klammer auf noch bei zeichenarray mit einfügen...

zeichenkette[ i ]=zeichenarray[rand()%sizeof(zeichenarray)];

beim ersten durchlauf ist i ja 0 also wird dem ersten element im array zeichenkette folgendes zugewiesen

zeichenarray[rand()%sizeof(zeichenarray)];
und das teil hier macht nichts anderes als ein zufälliges zeichen aus dem array mit dem von dir vorgegebenen zeichen zu wählen (

wenn in zeichenarray 3 zeichen sind liefert sizeof(zeichenarray) dir eine 3 wenn 4 drin sind eine 4 usw...

das heisst du wählst mit rand()%sizeof(zeichenarray) eine zahl die zwischen 0 und grösse des zeichenarrays-1 liegt... das ist ja genau das was du haben willst, weil du willst ja ein zufälliges zeichen aus dem zeichenarray deiner zeichenkette an position i zuweisen


Zitat:

-> zeichenkette[ i ]='\0';


das terminiert wie bereits oben gesagt den string.. Ist das Nullbyte




Zitat:

-> Edit1->Text=("Zufallspasswort ist:%s\n",zeichenkette);


das ist borlandspezifisch das der das frisst find ich auch überraschend... %s heisst nur das an der stelle ein string eingesetzt werden soll... dieser string ist dann die zeichenkette... das \n kannst du dir hier sparen weils nur ein zeilenumbruch ist... das war nur für die übersichtlichere ausgabe auf der konsole
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: