Strings

Neue Frage »

Auf diesen Beitrag antworten »
Celtic_Princess Strings

Man soll ein Programm schreiben, das zwei Strings vergleicht, und die dann 0 oder ungleich Null zurückgibt.
Das soll mit strcmp geschehen und zeigen, ob String kleiner, gleich oder groesser ist.

char str1 20;
char str2 20;

printf("Bitte ersten String eingeben: ");
scanf("%s", &str1);
printf("Bitte geben sie den zweiten String ein: ");
scanf("%s", &str2);

if(strcmp(str1, str2)==0)
printf(""%s %s are the same", str1, str2);

else if(strcmp(str1,str2)<0)
printf("%s less than %s", str1, str2);

else
printf("%s greater than %s", str1, str2);


Hier versteh ich nicht wie strcmp vergleicht, im Buch steht das erste unterschiedliche Zeichen der beiden Strings, und dann welches groesser ist.
Aber damit kann ich nichts anfangen.
Ich habe bei else if mal das kleiner Null umgedreht und den Text entsprechend geändert, also das bei else dann less than steht, aber das ging nicht, dann war die Ausgabe falsch.
Wie funktioniert denn diese strcmp Block?
 
Auf diesen Beitrag antworten »
David_pb

Die Funktion strcmp vergleicht beide C-Strings Alphabetisch. Wenn str1 kleiner als str2 ist wird -1 zurückgegeben, ist str1 größer als str2 wird 1 zurückgegeben sind beide C-Strings gleich wird 0 zurückgegeben.

Hatte mal was geschrieben:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
int string::cmp( const char* s1, const char* s2 )
{
	int c1, c2, d;

	assert( s1 != 0 && s2 != 0 );

	do
	{
		c1 = *s1++; // Naechstes Zeichen von s1
		c2 = *s2++; // Naechstes Zeichen von s2
		d  = c1 - c2; // Differenz der Zeichen

		if ( d ) // Wenn Differenz besteht sind die Strings ungleich
		{
			return ( cry_math::sign_bit_not_set( d ) << 1 ) - 1;
		}
	} while( c1 );

	return 0;
}
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »