if Abfrage nur Ausführen wenn Buchstaben folgen
-
Hallo zusammen,
schreibe einen Route Block für einen Telefon Router. Habe eine if Abfrage und will nur das er es ausführt wenn hinter einem bestimmten Begriff Buchstaben kommen, in diesem Fall Location:Restaurant. wenn Location:(Leerzeichen) da steht soll nicht ausgeführt werden.
In Shell gibt es einen Befehl wie [digit] , dieser erkennt ob es sich um Buchstaben handelt.
Gibt es so etwas ähnliches auch in C?Hier mal meine Abfrage
if (method == "Message" && search ("Location:[digit]*")) { sl_send_reply("200", "OK"); log(1, "Touriführer\n"); if (search("Location*")){ exec_msg("cd etc/ser/;sh zweiteEingabe"); }; if (method == "Bye") break; };
Danke schon mal für eure Antworten.
Gruss flyingt
-
du kannst einfach den integer-wert des bytes überprüfen, da buchstaben immer innerhalb eines gewissen bereichs liegen. also die grossbuchstaben hier, die kleinbuchstaben woanders. die genauen zahlen findest du auf einer ASCII-tabelle....
/EDIT: könnte nur probleme mit sonderzeichen wie umlauten und so geben..... wenn du einfach nur zahlen ausschliessen willst gehts einfacher, da musste nur schauen ob der wert NICHT zwischen 0x30 und 0x39 liegt.....
-
#include <string.h> if(strstr(string,"Location: ")==0) { ... }
In den String schreibst halt des rein was überprüft werden soll
-
Das mit dem integer Wert ist eine gute Idee, da es schwer ist in meiner config Datei integer zu deklarieren.
mit welchem befehl überprüfe ich denn den integer wert. ist egal ob zahlen ,buchstaben oder sonderzeichen. hauptsache es wird nur dann ausgeführt wenn etwas drin steht. also ein space steht aür nichts, das kann nicht sein.
in der zeit such ich grade mal nach einer ascii tabelle.danke
gruss flyingt
-
also sowas hier funktioniert nicht:
if(method == "Message")
wenn du überprüfen willst, ob der erste buchstabke KEINE zahl ist, dann geht das so:
if(meinString[0] > 57 && meinString[0] < 48) { // ist keine zahl }
-
Zum Beispiel so:
if(str[i]>='a'&&str[i]<='z') printf("Kleinbuchstabe");
(außerdem gibt es in der <ctype.h> Funktionen wie isdigit (Ziffer), isalpha (Buchstabe) oder isspace (Whitespace), die du verwenden könntest)
-
danke für die tipps!
if(method == "Message")
das ist ein router spezifischer befehl. das steht in einem modul des routers.
dieser befehl such mir in einer sms nach dem begriff: location. der steht zweimal drinnen, einaml steht da location:(leerzeile) und einmal steht da location:(Variable).
das skript soll nur ausgeführt werden wenn er location:r(Variable) findet. diese Variable gibt halt der Telefon anwender ein, deswegen wollte ich überprüfen ob etwas hinter location: steht.
gruss flyingt
-
Dazu brauchst du als erstes die Position von "Location:" in deinem String und kannst dann darüber auch auf das Zeichen hinter dem Doppelpunkt zugreifen.
btw, irgendwie sieht mir das "if(method=="Message")..." nicht wirklich C-artig aus. Was für einen Typ hat denn method?
-
Das ist ein VoIP Router der auch SIP versteht, das ist ein VoIP Protokoll.
Deswegen ist es auch nicht so leicht da alle C Bibliotheken einzubinden. Der Route Block ist zwar in C geschrieben, aber ich keien Bibliotheken weiter einfügen.
Das mit isdigit ist eine gute idee, so etwas habe ich gsuch, werde das mal probieren glaube aber nicht das das geht