Προς το περιεχόμενο

Έλεγχος string


HaPagan

Προτεινόμενες αναρτήσεις

Δημοσ.

Παρακατω ειναι μια λυση σε assembly αν ενδιαφερεσαι :

 

mov dx,1 ' initialize to true

mov si,offset string1

cld

lodsb ' get 1st char

or al,al

jz done

L1:

lodsb

or al,al

jz done ' ASCIIZ string check if string end

cmp al,[si-2]

je L1

mov dx,0 ' false

done:

mov result,dx

 

Αν η result ειναι 0 (false), τοτε δεν ειναι

ολοι οι χαρακτηρες ιδιοι.

Αν ειναι 1 (true) τοτε ειναι.

Δημοσ.

Θα μπορούσε να γίνει και έτσι στην C (ms-c 6.0):

 

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">int SameChar(char *pString)

{

int iIndex;

 

for(iIndex=0;iIndex!=strlen(pString);iIndex++)

{

// Boundary check (do not exceed pString length)

if(strlen(pString)-1>=iIndex+1)

{

// Strng array check (on first different char return -1)

if(pString[iIndex]!=pString[iIndex+1])

{

return -1;

}

}

else

{

// End of string.

break;

}

}

 

return 0; // All characters same.

}[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">0= όλοι ίδοι , -1= διαφορά (αν θες να είναι case insensitive όπως προείπαν και οι υπόλοιποι μετέτρεψε τους χαρακτήρες σε κεφαλαίους ή μικρούς δες: strupr/strlwr ή CharUpper/CharLower σε Win32s API)

 

Καλή τύχη.

 

<small>[ 21-04-2002, 19:41: Το μήνυμα επεξεργάστηκε από: Directx ]</small>

  • 6 μήνες μετά...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...