String Zeichen für Zeichen durchsuchen
-
Morgen leute,
also zu meiner person, ich habe gerade mit dem Programmieren in C begonnen und habe vorher nur ein wenig in VB programmiert.
Ich habe im moment ein Problem wo ich einfach nicht weiter komme. Ich habe ein Funktion geschrieben an die zwei zeiger übergeben werden. In diese Funkion soll koeffizienten vor einem Bestimmten Zeichen erkennen. Ich habe mir das so gedacht, daß ich eine while schleife laufen laße, welche jedesmal ein Zeichen zurück springt in dem String und diese zeichen in einem anderen sting Speichert. Das ganze soll solang passieren bis man entweder auf ein leerzeichen, ein Plus oder ein Minus stößt. Danach soll ein Zeiger auf den String zurück gegeben werden.
Vielleicht könnt ihr mir helfen mit meinem Code komme ich einfach net weiter, der funktioniert einfach nicht wirklich.
void Expo_for(char *zgr_pu,char *zgr_e,char *pos) { int i,n; char puffer[80],puffer_2[80]; strcpy(puffer,zgr_pu); i = pos-zgr_pu-1; while (1) { i-- if (puffer[i] != "+") // ich habe hier einfach mal ein Plus zum test genommen { puffer_2[n] = puffer[i]; n++ } else break; } zgr_e = puffer_2; }zgr_pu ist der zeiger auf einen String der bearbeitet werden soll, pos ist ein zeiger auf das zeichen dessen koeffizienten wir bestimmen sollen und zgr_e ist nachher der zeiger auf den string in dem der koeffizeint gespeichert werden soll.
Schonmal Danke leute ..
Gruß Tim
-
zgr_pu ist der zeiger auf einen String der bearbeitet werden soll, pos ist ein zeiger auf das zeichen dessen koeffizienten wir bestimmen sollen und zgr_e ist nachher der zeiger auf den string in dem der koeffizeint gespeichert werden soll.
Ist pos ein zeiger auf das zeichen im zgr_pu string oder auf einen anderen string?
-
Ich weiß nicht ob ich dich jetzt richtig verstanden habe, was dein Programm machen soll. Aber so würde ich das jetzt auf die Schnelle lösen:
#include <stdio.h> #include <string.h> // parameter text: der zu durchsuchende string // parameter koeffizient: der string in dem der koeffizient gespeichert werden soll // rückgabewert: position des werts in text unsigned int finde_koeffizient(char* text, char* koeffizient) { unsigned int i = strlen(text) - 1; // die suche beginnt am ende von text while(i > 0) // bis wir beim zweiten zeichen sind (das erste zeichen wäre ja kein trennzeichen mehr) { if(text[i] != ' ' && text[i] != '+' && text[i] != '-') { --i; // falls das zeichen kein leerzeichen, plus oder minus ist gehe eine position zurück } else { break; // andernfalls beende die suche hier, da das trennzeichen gefunden wurde } } int j = 0; for( ; j < i; ++j) { koeffizient[j] = text[j]; // kopiere alle zeichen bis zur gefundenen position in den string koeffizient } koeffizient[j + 1] = '\0'; // die abschließende 0 nicht vergessen return i; // position des trennzeichens zurückgeben } int main() { char foo[] = "koeffizient wert"; // der string mit koeffizient und wert char bar[25]; // in diesem string soll der koeffizient gespeichert werden unsigned int position = 0; // die position des werts in foo position = finde_koeffizient(foo, bar); if(position == 0) { printf("Kooeffizient wurde nicht gefunden"); } else { printf("Ursprungstext: %s\n", foo); printf("Position von Wert in Ursprungstext: %i\n", position); printf("Koeffizient: %s\n", bar); } return 0; }
-
Sorry das ich mich solang nicht gemeldet habe, hatte kein Internet die Tage...
@ALso : Ich *pos ist ein Zeiger auf ein bestimmtes zeichen Im Stiring *zgr_pu. von Diesem Zeichen aus soll die Software rückwärts auf den Anfang von zgr_pu gehen, bis es auf ein Zeichen Trifft wie etwa :
- Leerzeichen
- plus
- Minus
Das was zwischen dem Zeichen z.B "x" und einem der oben genannten Zeichen ist soll dann über zgr_e "zurück gegeben" werden.@OhneNamen : Ich werde mir das mal genau Anschauen.
Aber schon mal Vvelen Dank an Beide.
Gruß Tim
-
@timb0 zeile 21 geht so nicht, du musst strcpy verwenden.