Suche ein Word in einer Kette

Gast #2580250
Hi,
ist es möglich ein Word in einem String zu suchen ohne strcat zu 
benutzen.
Die Funktion, die ich geschrieben habe, funktioniert nur wenn es mit das 
String mit b anfängt.

danke

void search(void)
{
char MyArray[6][6]={"mybit","bit",fistbit",sbsiti","hallo"};
char MYWord[6]="bit";
for(int i=0i<6;i++)
  {
    for(int j=0;j<6ji++)
       {
         if(MYWord[i] == MyArray[i][j])
                {
                    Resultat[i]= MYWord[i];
                }
       }
 }

}
Gast
Im der ersten for-Schleife fehlt ein Semikolon, in der zweiten auch und 
einmal steht i statt j (i++ in der zweiten).

Word findest du im Mediamarkt, ist ein Programm von Microsoft, was du 
suchst ist ein Wort.
Gast
Das der Code nicht funktioniert liegt an der Zeile:
1
Resultat[i]= MYWord[i];

Wenn das Wort nicht am Anfang los geht, dann steht in Resultat[0] 
vermutlich eine 0 und der String ist damit beendet.
Gast
>bekomme ich Hilfe für das Problem?

Ganz offen gesagt, zeigt Dein Code als auch Deine Fragestellung,
das Du viel grundlegendere Probleme mit C hast.
Die Antworten beziehen sich erstmal auf diese.
Sobald diese gelöst sind, kann man sich dann an die "höheren" Probleme 
machen.

Bitte poste als erstes Code, der ohne Fehler und Warnungen kompilierbar 
ist.
Solche Antworten
>ja kleiner Fehler beim eintippen
sind Motivationskiller für viele hier.
Tippe also bitte nicht ein, sondern nutze CopyNPaste von "echtem" Code.
Gast
Kleiner Scherz am Rande:

>ist es möglich ein Word in einem String zu suchen ohne strcat zu
>benutzen.

Das ist nicht nur möglich. Es ist sogar empfehlenswert. :-)

Stichwort: strspan
Gast
nicht getestet aber könnte funzen:
1
void search(void)
2
{
3
    char MyArray[6][6]={"mybit","bit",fistbit",sbsiti","hallo"};
4
    char MYWord[6]="bit";
5
    #define SIZE_OF_WORD 3
6
    int k;
7

8
    for(int i=0; i<6; i++)
9
    {
10
        k = 0;
11
        for(int j=0; j<6; j++)
12
        {
13
            if(MYWord[k] == MyArray[i][j])
14
            {
15
                Resultat[k]= MyArray[i][j];
16
                k++;
17
            }
18
        }
19
        if( k+1 < SIZE_OF_WORD )  //wenn wort nicht komplett -> ergebnis loeschen
20
        {
21
            Resultat[0] = '\0';
22
        }
23
    }
24
}
Anfänger schrieb:
> nur kritik aber keine Lösung,Wenn es Hausaufgabe dann möchte ich nur
> wissen wie das funktionniert und nächste mal nicht mehr fragen.


Erst mal das Problem in 2 Teilprobleme aufteilen.

Das erste Teilproblem ist eine Funktion die 2 STrings bekommt und 
feststellt, ob der eine im anderen enthalten ist.

Mit der Lösung dieses ersten Teilproblems geht man dann das zweite 
Teilproblem an: Das ursprüngliche Array ein Wort nach dem anderen 
durchgehen und unter Zuhilfenahme der Funktion aus dem ersten 
Teilproblem feststellen, in welchem Wort aus dem Array das gesuchte Wort 
enthalten ist.

Die Aufgabe ist nicht schwer. Nur benötigt es
a) ein bischen Vorarbeit mit Papier und Bleistift um sich klar zu machen
   was denn eigentlich "enthalten sein" bedeutet. Wie löst du das
   Problem denn mit der Hand, wenn die Lösung "Ich schau einfach hin
   und weiß die Lösung" nicht zulässig ist?

b) ein bischen Planung um das komplette Problem in (für dich)
   handhabbarere Teilprobleme zu zerlegen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.