Challenge accepted.
Meinst du so etwas?
Leider ohne wstring / Gross/Kleinschreibung ;-)
Zudem fehlt der praktische Nutzen eines Vektors, dafür kommt es eher an strnatcmp() heran.
Gruss
cwriter
Meinst du so etwas?
C++:
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <string.h>
int strnatcmp(char* s1, char* s2)
{
int i = 0;
while(s1[i] != '\0')
{
while(s1[i] == s2[i])
{
if(s1[i] == '\0' && s2[i] == '\0') return 0;
else if(s1[i] == '\0') return 2;
else if(s2[i] == '\0') return 1;
i++;
}
if(isdigit(s1[i]) || isdigit(s2[i]))
{
char n1[10];
char n2[10];
int ii = i;
int i3 = 0;
int ni1 = 0;
int ni2 = 0;
if(isdigit(s1[i]))
{
while(isdigit(s1[ii]))
{
n1[i3] = s1[ii];
ii++;
i3++;
}
n1[i3] = '\0';
ni1 = atoi(n1);
}
ii = i;
i3 = 0;
if(isdigit(s2[i]))
{
while(isdigit(s2[ii]))
{
n2[i3] = s2[ii];
ii++;
i3++;
}
n2[i3] = '\0';
ni2 = atoi(n2);
}
if(ni1 > ni2) return 1;
else return 2;
}
else
{
if(s1[i] > s2[i]) return 1;
else return 2;
}
i++;
}
}
int main(int argc, char* argv[])
{
char s1[512] = {"aaa 123 aaa"};
char s2[512] = {"aaa 99 aaa"};
if(strnatcmp(s1,s2) == 1) printf("1 ist groesser\n");
else if(strnatcmp(s1,s2) == 2) printf("2 ist groesser\n");
else printf("Beide sind gleich gross\n");
system("PAUSE");
return 0;
}
Leider ohne wstring / Gross/Kleinschreibung ;-)
Zudem fehlt der praktische Nutzen eines Vektors, dafür kommt es eher an strnatcmp() heran.
Gruss
cwriter
Zuletzt bearbeitet: