/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Hjaelp til egen strcmp()
Fra : Shade


Dato : 16-04-02 21:45

Jeg er i gang med at forsøge at lave min egen strcmp.
Men jeg kan ikke få det nedenstående til at virker, min
compiler er visual studio 6.
Idet den selv ved rigtig indtastning udskriver "Falsk".
Rasmus

#include <iostream>
#include <fstream>
using namespace std;
void indlaeser();
//char BrugerOrd benyttes flere steder i kode
//da funktion indlaeser kalder den
//deklareres den her
const int MAX = 4;
char BrugerOrd[MAX];
char FloppyDiskPassword[MAX];

int main()
   {
   
   indlaeser();
   
   int i = 0;
while (BrugerOrd[i] == FloppyDiskPassword[i])
      {
         ++i;
      }
if (BrugerOrd[i] == FloppyDiskPassword[i])
      cout << "Sandt" << endl;
   else   
      cout << "Falsk" << endl;
      
   return 0;
   }



//**********************************************
//funktion at indlæse FloppyDiskPassword
void indlaeser()
   {
//Indlæser brugers password
   cout <<"Indtast password :" << endl;
   cin >> BrugerOrd;
//Indlæser password til sammenligning fra disk
   ifstream infile("a:\\test.txt");
   infile >> FloppyDiskPassword;
   }
//**********************************************

 
 
Claus Rasmussen (16-04-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 16-04-02 21:57

Shade wrote:

> Jeg er i gang med at forsøge at lave min egen strcmp.

Hvorfor bruger du ikke bare den inbyggede ?


> Men jeg kan ikke få det nedenstående til at virker, min
> compiler er visual studio 6.

Du har ingen terminering på din løkke. Hvis strengene er
ens vil du fortsætte med at sammenligne ud over strengenes
længde indtil du møder en tilfældig forskel (eller indtil
du får en segmentation fault). F.eks:

BrugerOrd = "HEJ\0!"#¤#¤%&&%/"#¤&...
FloppyDiskPassword = "HEJ\0!"#¤?/#¤%&#&/#¤...
^
her er de forskellige

Gør i stedet således:

while (BrugerOrd[i] != 0 && FloppyDiskPassword[i] != 0
&& BrugerOrd[i] == FloppyDiskPassword[i] {
++i;
}

if (BrugerOrd[i] == 0 && FloppyDiskPassword[i] == 0)
cout << "Strengene er ens" << endl;
else
cout << "Strengene er forskellige" << endl;

Men på bundlinien er: Det er dumt selv at fuske med at lave
rutiner, der er implementeret _og_ testet allerede.

-Claus


Bertel Lund Hansen (16-04-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-04-02 22:43

Claus Rasmussen skrev:

>Men på bundlinien er: Det er dumt selv at fuske med at lave
>rutiner, der er implementeret _og_ testet allerede.

Jeg ville også til at skrive noget lignende, men det kan være
lærerigt at efterligne færdige rutiner. Det er dog dumt ud over
de tilfælde at ... osv.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Shade (17-04-2002)
Kommentar
Fra : Shade


Dato : 17-04-02 14:41

> Du har ingen terminering på din løkke. Hvis strengene er
> ens vil du fortsætte med at sammenligne ud over strengenes
> længde indtil du møder en tilfældig forskel (eller indtil
> du får en segmentation fault). F.eks:
>
> BrugerOrd = "HEJ\0!"#¤#¤%&&%/"#¤&...
> FloppyDiskPassword = "HEJ\0!"#¤?/#¤%&#&/#¤...
> ^
> her er de forskellige
>
> Gør i stedet således:
>
> while (BrugerOrd[i] != 0 && FloppyDiskPassword[i] != 0
> && BrugerOrd[i] == FloppyDiskPassword[i] {
> ++i;
> }
>
> if (BrugerOrd[i] == 0 && FloppyDiskPassword[i] == 0)
> cout << "Strengene er ens" << endl;
> else
> cout << "Strengene er forskellige" << endl;
>

Jeg er ikke helt med den if sætning der kommer.
Kan du ikke prøve at forklare mig hvorfor
du ikke blot kan skrive

if (BrugerOrd[i] == FloppyDiskPassword[i])
cout << "Sandt" << endl;
else
cout << "Falsk" << endl;
Påforhånd tak. Kender i nogle gode C++ bøger,
jeg læser i øjeblikket Object-Oriented Programming on C++ 3ed,
af Rober Laforce. Jeg vil gerne lære hvordan man "selv programmere"
inden jeg kaster mig over alt det der er i Visuals compiler. Men vil
meget gerne hører om
gode bøger.

Rasmus

Claus Rasmussen (17-04-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 17-04-02 14:48

Shade wrote:

> Kan du ikke prøve at forklare mig hvorfor
> du ikke blot kan skrive
>
> if (BrugerOrd[i] == FloppyDiskPassword[i])
> cout << "Sandt" << endl;
> else
> cout << "Falsk" << endl;

Det gør ingen forskel og er nok en smule pænere. Så brug bare det
i stedet.


> Påforhånd tak. Kender i nogle gode C++ bøger,

Prøv at kigge tilbage i gruppen. Der har været et par tråde her på
det seneste, der handlede netop om det.

-Claus


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste