Zeichenketten und Arithmetik (string im string enthalten?)

JavaBoy34

Neues Mitglied
Hallo leute,

ich habe eine aufgabe bekommen für die Uni und komme bei der einen Aufgabe leider nicht weiter.
Ich hab mir bei dieser Aufgabe einiges überlegt jedoch falle ich immer ins Schwarze.
Nun wollte ich euch fragen wie ich diese evtl. lösen könnte.

Vielen Dank im voraus.
11613
 

httpdigest

Top Contributor
Wenn du keine Indexschreibweise verwenden darfst, bleibt dir eigentlich nur noch Zeigerarithmetik (wie es ja auch in der Aufgabe steht). Also brauchst du die zwei Operatoren '++' (Inkrement) und '*' (Dereferenzierung):
C:
char* zeichenkette = ...;
zeichenkette++; // <- Zeiger um einen character weitersetzen
char c = *zeichenkette; // <- Zeiger dereferenzieren
 

httpdigest

Top Contributor
Habe mal was gebastelt (in plain C):
C:
#include <assert.h>
static char startsWith(char const* str, char const* substr) {
    while (*str != '\0' && *substr != '\0')
        if (*str++ != *substr++)
            return 0;
    return *substr == '\0';
}
int strindex(char const* str, char const* substr) {
    char const* s = str;
    do
        if (startsWith(s, substr))
            return s - str;
    while (*s++ != '\0');
    return -1;
}
#define assertStrindex(idx, str, substr) assert(strindex(str, substr) == idx);
int main(int argc, char** argv) {
    assertStrindex(0, "", "");
    assertStrindex(0, " ", " ");
    assertStrindex(0, "Hello, World", "Hello, World");
    assertStrindex(5, "Hello, World", ", World");
    assertStrindex(-1, "Hello, World", ", World!");
    assertStrindex(-1, "Hello, World", "Ciao,");
    assertStrindex(-1, "World", "Hello, World");
}
 

JavaBoy34

Neues Mitglied
Vielen Dank für deine Lösung, sieht ja besser aus als meins was ich eben geschafft habe.

Meins sah so aus als C-neuling.


C:
char strindex(char *zahl1, char *zahl2)
{

    if(*zahl1 != "" || *zahl2 != "")
    {
        char erste_ziffer_zahl1 = *zahl1;
        char erste_ziffer_zahl2 = *zahl2;
        char ausgabe_erste_ziffer_zahl2 = *zahl2;

        while(*zahl1 != '\0')
        {
            while(erste_ziffer_zahl1 == erste_ziffer_zahl2 && erste_ziffer_zahl2 != '\0'){
                erste_ziffer_zahl1 = *(zahl1)++;
                erste_ziffer_zahl2 = *(zahl2)++;
            }
            if(erste_ziffer_zahl2 == '\0'){
                return ausgabe_erste_ziffer_zahl2;
            } else {
                erste_ziffer_zahl1 = *(zahl1)++;
            }
        }
    }
    return -1;
}
 

Ähnliche Java Themen

Neue Themen


Oben