error Geschrieben 22. Juli 2004 Teilen Geschrieben 22. Juli 2004 Also ich habe ein Prob und zwar wir ein Satz in eine String gespeichert, allerdings ist dieser Satz immer verschieden und soll auf ein, zwei Wörter hin unersucht werden sind beide Wörter vorhanden soll eine Meldung ausgegeben werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Benvija Geschrieben 22. Juli 2004 Teilen Geschrieben 22. Juli 2004 Hallo, versuchs mal mit der Funktion strstr, die sucht im String nach einem Teilstring. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
error Geschrieben 22. Juli 2004 Autor Teilen Geschrieben 22. Juli 2004 Danke das war genau das was ich gesucht hab *freu* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Steviegonzales Geschrieben 23. Juli 2004 Teilen Geschrieben 23. Juli 2004 Die stringklasse bietet ebenfalls eine Methode find an .... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Asrin Geschrieben 27. Januar 2010 Teilen Geschrieben 27. Januar 2010 Hi Leute, ich habe das gleiche Problem wie error.Ich will aber keine Funktion für das finden verwenden, sondern es einfach mit eine schleife und einen zweiten Array lösen. Hab folgenden Ansatz: [ #include <stdio.h> #include <stdlib.h> #define ZEICHEN 60 /* Anzahl zugelassene Zeichen */ #define ZEICHEN2 60 /* Anzahl zugelassene Zeichen im 2.Array */ main() { char text1[ZEICHEN]; char text2[ZEICHEN2]; int i=0; int j = 0; char c; /* Eingabe */ printf("\nGeben Sie eine Zeichenkette ein:"); c = getchar(); while(c != '\n'){ text1=c; i++; c = getchar(); } text1 = '\0'; //printf("%s",text); for(i=0;i < 60;i++) { if(text1 == 'p'){text2[j]= 'p';} if(text1[i+1] == 'o'){text2[j+1]= 'o';} if(text1[i+2] == 'k'){text2[j+2]= 'k';} if(text1[i+3] == 'e'){text2[j+3]= 'e';} if(text1[i+4] == 'r'){text2[j+4]= 'r';} } text2[j+5] = '\0'; printf("%s\n",text2); system("pause"); } ] das Problem hierbei, ich bekomme das Wort poker in jedenfall in den zweiten Array reingeschrieben, also wenn einfach nur diese 5 Buchstaben im text vorkommen, egal als wort oder nicht! Was muss ich anders machen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 27. Januar 2010 Teilen Geschrieben 27. Januar 2010 Was muss ich anders machen. Aussage oder Frage? Als erstes würd ich mal den Bufferüberlauf wegmachen. :floet: (Anmerkung der Redaktion: text1[58] == 'p') Was gefällt dir an strstr nicht? (Und für was brauchst du nen zweiten Array?!) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Asrin Geschrieben 27. Januar 2010 Teilen Geschrieben 27. Januar 2010 Es ist eine Frage.Denn ich weiss, dass ich die If Abfragen anders machen soll,weiss nur nicht genau wie?? Ein zweite Array um zu sehen, dass das Wort erkannt wurde.Ich könnte den auch weglassen. Und kein strstr, weil ich die Aufgabe ohne eine Funktion lösen möchte. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
chooter696 Geschrieben 28. Januar 2010 Teilen Geschrieben 28. Januar 2010 worin steckt da der sinn? wenn du vorhandene Funktionen nicht nutzen willst? 0.o Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Xanatus Geschrieben 28. Januar 2010 Teilen Geschrieben 28. Januar 2010 das ganze konzept wirkt schwachsinning, aber ich helf dir trotzdem mal. die for-schleife sollte so aussehen: for(i=0;i < 55;i++) { if(text1[i] == 'p' && text1[i+1] == 'o' && text1[i+2] == 'k' && text1[i+3] == 'e' && text1[i+4] == 'r') { text2[j]= 'p'; text2[j+1]= 'o'; text2[j+2]= 'k'; text2[j+3]= 'e'; text2[j+4]= 'r'; } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 28. Januar 2010 Teilen Geschrieben 28. Januar 2010 Ich will aber keine Funktion für das finden verwenden, sondern es einfach mit eine schleife und einen zweiten Array lösen.Ist das der Wortlaut der Aufgabe? Hast du das dann so aufgefasst, dass du das gefundene Wort in das zweite Array kopieren sollst? Das ist eigentlich Quatsch. Du weißt doch genau, welches Wort du suchst, es steckt hartcodiert in deinem Programmcode. Daher brauchst du es gar nicht aus dem durchsuchten String zu kopieren, du könntest es direkt in das zweite Array schreiben, wenn du es gefunden hast. Worauf ich hinaus will: Vielleicht ist das zweite Array für einen anderen Zweck gedacht: Da drin soll möglicherweise vorher stehen, welches Wort gesucht werden soll. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Asrin Geschrieben 28. Januar 2010 Teilen Geschrieben 28. Januar 2010 @Xanatus Danke, genau darauf hätte ich kommen müssen. Ich habe das genze etwas umgeschrieben und das Programm läuft jetzt. @klotzkopp Der zweite array war einfach eine spontane idee,hab es jetzt rausgenommen. #include <stdio.h> #include <stdlib.h> #define ZEICHEN 60 /* Anzahl zugelassene Zeichen */ main() { char text[ZEICHEN]; int i=0; char c; /* Eingabe */ printf("\nGeben Sie eine Zeichenkette ein:"); c = getchar(); while(c != '\n'){ text[i]=c; i++; c = getchar(); } text[i] = '\0'; /* Zeile nach dem Wort Poker durchsuchen */ for(i=0;i!='\n';i++) { if(text[i] == 'p' && text[i+1] == 'o' && text[i+2] == 'k' && text[i+3] == 'e' && text[i+4] == 'r') { printf("\nDas Wort Poker ist im Text vorgekommen"); break; } else { printf("\nDas Wort Poker kam nicht im Text vor!"); break; } } system("pause"); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 28. Januar 2010 Teilen Geschrieben 28. Januar 2010 Das Programm hat 2 riesen große Fehler welche zu einem Absturz oder wenn es etwas wäre wo andere mit arbeiten würden zum ausführen von Schadcode führen können. Lies dir mal das hier durch: Pufferüberlauf ? Wikipedia Im Konkreten sind die Probleme einmal das einlesen der Benutzereingabe und die Suchschleife. Schau dir an was passiert wenn der Benutzer mehr als 60 Zeichen eingibt und was in der Schleife passiert wenn in text mehr als 55 Zeichen drin stehen. PS: system("pause") am Ende solltest du auch nicht verwenden weil das nur zufällig unter Windows klappt. Das kannst du aber zum Beispiel durch getchar oder ähnlichem ersetzten wenn du am Ende asu irgendeinem Grund noch auf einen Tastendruck warten willst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Asrin Geschrieben 28. Januar 2010 Teilen Geschrieben 28. Januar 2010 Hier das erweitete Programm um Erkennung des Wortes auch in Falle von Großbuchtaben und Beachtung des Pufferüberlaufes, sowie die Änderung der Suchschleife. Es sollten nur auch die 2 Probleme gelöst sein. Und system("pause") weil ich ausschließlich unter windows arbeite und das bruache ich für das Anzeige Fenter. #include <stdio.h> #include <stdlib.h> #define ZEICHEN 60 /* Anzahl zugelassene Zeichen */ int main() { char text[ZEICHEN]; int i=0; char c; /* Eingabe */ do{ printf("\nGeben Sie eine Zeichenkette ein:"); c = getchar(); while(c != '\n'){ /* Falls Großbuchstaben im Text vorkommen, Sollen diesen in Kleinbuchstaben umgewndelt werden */ if ('A' <= c && c <= 'Z') { c =(c + 'a' - 'A'); } text[i]=c; i++; c = getchar(); } }while(i >= 60); text[i] = '\0'; //printf("%s",text); /* Zeile nach dem Wort Poker durchsuchen */ for(i=0;i < 55;i++) { if(text[i] == 'p' && text[i+1] == 'o' && text[i+2] == 'k' && text[i+3] == 'e' && text[i+4] == 'r') { printf("\nDas Wort Poker ist im Text vorgekommen!"); break; } else { printf("\nDas Wort Poker kam nicht im Text vor!"); break; } } system("pause"); return 0; }/*END_amin() */ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.