Nach bestimmten Zeilen in einem Stream suchen und bis zu einer zeichenkette weitersuchen!?
-
Hi leute, ich bin ziemlich neu in c(ich hoffe, das ist das c-forum).
ich arbeite zurzeit an einer WINZIGEN scriptsprache, die mit ein paar wenigen befehlen auskommen soll. ein beispiel code um 5 mal "hello world!" austzudrucken soll etwa so lauten:[§=#hello#&"Hello World!" [loop{p=§hello/5}
der name ist "graphei" oder eher gesagt
Γραφει
"es schreibt".
Mit syntax und so weiter komm ich klar, aber ich schaffe es nicht, aus einer eingelesenen datei nach den "[" zu suchen und dann das nächste schlüsselwort (zum beispiel loop) zu indetifizieren....
hilfe!?
mfg, max
-
sorry, ich war nicht angemeldet
-
Kannst du ein bisschen genauer sagen was das Problem ist? Ich hätte jetzt ja gesagt einfach mit strpbrk oder strstr nach "[" suchen und sich dann anzugucken was das nächste Wort ist, z.B. wieder mit strstr. Womit hast du da Schwierigkeiten?
-
ich finde kein genaues tuti, was mir zeigt, wie ich das machen kann.
es würde auch nix bringen, den bisherigen code zu posten, da der bis jetzt nur aus datei-öffnen besteht.
ich stelle mir das so vor:
ich lese eine datei ein.
das programm sucht nach der ersten [, scannt das wort danach, und je nachdem, was das wort ist(wie etwa loop) sucht das programmm nach vom syntax her passenden code(wie hie etwa p=§hello/5) usw. aber es ist doch wohl nich war, dass ich einfacher syntax proggen kann als das verarbeiten einer datei!?
mfg, max
-
Maximilianibus schrieb:
ich finde kein genaues tuti, was mir zeigt, wie ich das machen kann.
Dann besorg dir ein Lehrbuch oder sonstwas! Du musst schon Programmieren lernen wenn du Programmieren willst. Ein Forum kann dir konkrete Fragen beantworten wenn du etwas nicht verstehst oder keinen Ansatz hast, aber es kann dir nicht die ganze Arbeit abnehmen (außer natürlich gegen Geld
).
-
ich habe schon ein tuti durchgearbeitet(eigentlich zwei), aber da wird auch nicht konkret auf meine fragen geantortet
kennt jemand vll ein gutes buch/tutorial oder einen thread zeigen?
wäre nett!
mfg, max
ps: ich bin über die antwort überrascht! in nem andern forum, wo ich bin(vb) hatte ich auch mal was gefragt und es hies: lern programmieren, du dummkopf! oder ffür solch dumme fragen ist der off-topic bereich zustädig...! danke!
-
Maximilianibus schrieb:
ich habe schon ein tuti durchgearbeitet(eigentlich zwei), aber da wird auch nicht konkret auf meine fragen geantortet
Aber was ist deine konkrete Frage?
kennt jemand vll ein gutes buch/tutorial oder einen thread zeigen?
Kenne mich mit C Büchern nicht so aus. Da musst du warten bis jemand anderes diesen Thread liest (was um diese Uhrzeit eine Weile dauern kann).
-
meine frage ist folgende:
wie kann man in einem stream(DER SCHON EINGELESEN IST!!!) nach einer bestimmten variable suchen und dann bis zu einer weiteren betsimmten variable suchen.
mfg max
p.s. falls jemand helfen möchte, soll er sich bei mir melden. ne eigene sprache ist doch was feines...:P
-
Wie neu bist du denn?
Kennst du Zeiger und Arrays und deren Unterschied?
Kennst du das Speicherhandling?
Kennst du den Umgang mit Dateien?
Kennst du die Standardbibliothek insb. die Stringfunktionen?
Kennst du Standardein- ausgabe?
...
Wenn nicht, hast du noch was vor dir.Ich würde dir auch empfehlen, eine einfacher auswertbare Syntax für deine Skriptsprache zu wählen inkl. Schlüsselworte, Tokens, Parameter, ...
-
ich kenne ein- und ausgabe, arrays, variablen, und öffnen/schließen/lesen von dateien....
und zur syntax: steckt in arbeit....
-
Hi,
diese Lösung ist nicht umbedingt die beste, aber so gehts.
#include <stdlib.h> #include <stdio.h> #define IDENTID_LOOP 10001 void StringZro(char *psDst, int piMaxIdx) { for(int i = 0; i < piMaxIdx; i++) psDst[i] = 0x00; } int StringCmp(const char *psStrA, const char *psStrB, int piMaxCmp) { for(int i = 0; i < piMaxCmp; i++) if(psStrA[i] != psStrB[i]) return i; return -1; } int GetCommand(char *pCommand) { if(StringCmp(pCommand, "Loop", 4) == -1) return IDENTID_LOOP; return 0; } int main() { char lCommand[1024]; StringZro(lCommand, sizeof(lCommand)); while(true) { puts("Command: "); gets(lCommand); switch(GetCommand(lCommand)) { case IDENTID_LOOP: puts("Loop!"); break; default: printf("Unkown command found: %s \n", lCommand); break; } } }
Wie gesagt, kann man MIT SICHERHEIT besser lösen aber bevor dir langweilig
wird...
Musste halt etwas weiter denken, wenn du dann nach Loop kein { findest oder
was auch immer den Fehler anzeigen etc...
Ist so halt ne ganze menge Arbeit^^
-
StringZro muss natürlich IN den loop!
-
Hmm, was will uns der Künstler damit sagen? Dass Defizite in den Sprachen Deutsch, Englisch und C vorliegen? Ich schiebe dies auf die Tageszeit.
@Frager:
Ich empfehle dir für die Syntax die C89 Funktion sscanf, diese ist relativ flexibel zu gebrauchen, eventuell kannst du deine Syntax an deren Auswertemöglichkeiten anpassen, zunächst vielleicht auch erstmal eine Anweisung pro Zeile.
-
ich lese mich grade durch galileo computig durch, danke für den tip mit sscanf.....
hab eh nix besseres zu tun, steam lädt zu lange..:P
mfg, max
-
allerdings finde ich nicht wirklich viel....