Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Bei Ausgabe von Array kommt nur kryptischer Unsinn raus

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 <
000
07.01.2005, 01:39 Uhr
~Negr0-Robert S.-
Gast


Hallo,

ich hab nen kleine Programm geschrieben welches einen Login besitzt. Dafuer wird der inhalt einer Textdatei mit der Eingabe verglichen. Das geschiet in einer for Schleife. Dabei wird auch ausgegeben was er gerade vergleicht und dabei kommt nur misst rum und dem entsprechend funktioniert natuerlich auch der Abgleich nicht, denn somit ist es nie gleich.

Hier der Source


C++:
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>
#include <string.h>
using namespace std;

//globale variblen

//read loginfiles funktion
char fnLogin(char chLI[18], char chPI[30], char chPWI[18])
{

//fnLogin variablen
char chLoginI[18];
char chPassw[18];
char chPath[12] = "data/login/";
char chLFC[18];
int intLPtmp = 0;

strcat(chPI, chLI);

//open file
ifstream datei( chPI );

//check if file exist
if( !datei )
{
    cerr << "User nicht vorhanden" <<endl;
    
    cout << "Login: ";
    cin >> chLoginI;

    cout << "Password: ";
    cin >> chPassw;
        
    fnLogin(chLoginI, chPath, chPassw);

    return -1;
}

//Password in Temp Variable speichern
while( !datei.eof() )
{
    datei.getline( chLFC, 18 );
    cout << chLFC << endl;
}


for(int i = 0; i <= 18; i++)
{

    if(chPWI[i] != chLFC[i])
    {
    
        cout << chLFC[i] <<i <<endl;
        intLPtmp = 1;

    }

}

if(intLPtmp != 0)
{
    cout << "Passwort falsch" <<endl;

}

return 0;
}

//Login & password IO
void fnLoginIO()
{
//fnLoginIO variablen
char chLoginI[18];
char chPassw[18];
char chPath[12] = "data/login/";

//Login input
cout << "Login: ";
cin >> chLoginI;

//Password input
cout <<"Password: ";
cin >> chPassw;

//call login & password check
fnLogin(chLoginI, chPath, chPassw);
}


//Main function
int main (int nArg, char* nArgs[])
{

//Startscreen
system("clear");
cout <<"################################################" <<endl;
cout <<"#                    MUAV                      #" <<endl;
cout <<"#        Mutly User Adressverwaltung           #" <<endl;
cout <<"#                                              #" <<endl;
cout <<"#                                              #" <<endl;
cout <<"#   all rights resieved @ Robert Stiehler      #" <<endl;
cout <<"#                  2004-2005                   #" <<endl;
cout <<"################################################" <<endl;

fnLoginIO();
//fnLogin(chLoginI, chPath);

return 0;
}




Die der Abgleich und die Ausgabe geschieht hier:

C++:
for(int i = 0; i <= 18; i++)
{

    if(chPWI[i] != chLFC[i])
    {
    
        cout << chLFC[i] <<i <<endl;
        intLPtmp = 1;

    }

}





Wenn jemand weis was falsch ist immer raus damit.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.01.2005, 02:04 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


äh ohne mich jetzt durch deine aufgabe quälen zu wollen...
wenn du c++ benutzt brauchst du dich nicht mehr mit den char-arrays rumärgern...

am besten gehts du so in der art vor...


C++:
#include <iostream>
#include <string>
#include <fstream>
#include <vector>

//user definieren
typedef struct{std::string userID; std::string password;....;}User;

//ein container zum aufnehmen der in der datei befindlcihen daten...
std::vector<User> UserDatabase;


//einlesen in etwa so
User temp_user;
std::string line,filename="test.txt";
std::ifstream ifs(filename.c_str());

while(std::getline(std::cin,line)){ //unter der annahme in jeder zeile steht ein user
aus line die einzelen userbestandteile herausparsen und in temp_user packen
UserDatabase.push_back(temp_user ) //user in datenbank einfügen...
}

std::string userID,password;
// so nehem wir an du hast username und password eingelesen, die datenbank in ner schleife durchgehen

int user_in_database(User u,std::vector<User> &udb){
for(int i=0;i<udb.size();++i)if(udb[i].password==u.password && udb[i].userID==u.userID) return 1;
return 0;
}


und ganz wichtig dabei

C++:
cout <<"################################################" <<endl;
cout <<"#        Windalfs geile Idee" <<endl;
cout <<"################################################" <<endl;



--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.01.2005, 02:13 Uhr
~Negr0
Gast


ist zwar auch ein schoener loesungs Ansatz, wuerde mich aber mehr darueber freuen wenn jemand den Fehler in meinem Prograemschen da oben findet bzw. weis woran es liegt, mir scheint es so als wuerde er nicht deffinierte Array Elemente Ausgeben, kann aber eigendlich nicht sein :/

trotz dem danke, wenn jemand weis wo das Problem bei meinem Prog liegt, ich bin fuer alles offen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.01.2005, 11:49 Uhr
~Negr0-Robert S.-
Gast


Das Problem hat sich erledigt, es lag daran das chPath[12] zu klein definiert war. Da ich da ja am ende noch den Login rein kopiere. Habe es jetzt auf 30 gesetzt und alles ist gut
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.01.2005, 14:19 Uhr
(un)wissender
Niveauwart


Nun, eigentlich macht man sowas nicht. Nimm std::vector.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: