Suche Projekt
-
Hallo Leute
ich würde gern bei einem Projekt helfen das nicht nach 1 Monat auf Eis gelegt wird.Was ich biete:
- gute Kenntnisse in C++
- gute Kenntnisse im Umgang mit STL und Qt
- Kenntnisse in SocketWas ich mir erhoffe:
- Gute Zusammenarbeit
- Weitere Erfahrungsgewinnung in C++ und weiteren BereichenBitte per PM melden.
MFG CCodex
-
bool csv_parse( char *str ,size_t len ,const char field_seperator ,const char quote ,const char newline ,bool (*cb)(size_t line,size_t field,char *str,size_t len,void *cb_arg) ,void *cb_arg ){ ... }
poste doch mal einen funktionskörper (sollten ca. 70 zeilen ohne externe libraries in c sein)...
@edit: kannst es mir auch per pm schicken. sag mir aber dann bescheid, weil ich die mails nicht tägl. abrufe
-
Inwiefern hilft ihm das bei seiner weiteren "Erfahrungsgewinnung" in C++?
-
Mechanics schrieb:
Inwiefern hilft ihm das bei seiner weiteren "Erfahrungsgewinnung" in C++?
kpl. ich sehe dann sofort den leistungsstand. wenn das nicht geht, würde ich ihm auch kein gutes c++ zutrauen.
vllt. geht das anderen anders und die können das riechen (wobei mein kolben schon echt groß ist...).
-
Mechanics schrieb:
Inwiefern hilft ihm das bei seiner weiteren "Erfahrungsgewinnung" in C++?
eig. würde einen die frage schon disqualifizieren, egal ob c oder c++ mir ist keine library funktion der std. libraries bekannt die hilfreich wär.
-
CCodex schrieb:
- gute Kenntnisse in C++
Das ist bei C++ leider keine wirklich ausreichende Beschreibung der Fähigkeiten. Wenn man dich etwas einschätzen können soll, dann poste mal irgendwas was du geschrieben hast von dem du denkst, dass es dein Sprachverständnis zeigt. (Also keinen komplizierten Algorithmus, sondern etwas bei dem du dir Gedanken um die Struktur der Software gemacht hast.) Beispielsweise sollten dir bei der Sichtung von Oo's Code sofort folgende Fragen durch den Kopf schießen:
- bool in C?
- Warum nicht const char* für str?
- Warum nicht char für field_seperator, quote und newline?
etc. Das war von oO bestimmt absichtlich schlechter Code, damit er sieht ob du darauf reagierst. Zudem sollte dir direkt auffallen, dass du C++ und nicht C angegeben hast. Das war sicher auch absicht, er wollte sehen, ob dir sofort auffällt, dass man das in C++ ganz anders lösen würde.
-
Ich programmier nur in C++ und mit C hab ich mich noch nicht so viel beschäftig, aber in C++ könnte ich dir einen Parser schreiben.
Ich hab mal an meiner eigenen Skriptsprache gebastelt aber bis her nicht weiter gemacht. Hier sind einige Ausschnitte aus dem wenigen Code:
lexical.h
#include "token.h" /** * Die Klasse lexical führt die Lexikalische Analyse durch. */ class Lexical { public: /** * SetString läd den zu bearbeiteten String. */ void setString( string sinput) { tpos = 0; input_size = sinput.size(); input_str = &sinput; } /** * getTokenToString gibt zum Token das Zeichen aus. */ string getTokenToString() { array< string, 42> list = { "Not In List", "<", ">", "<=", ">=", "==", "!=", "+", "-", "*", "/", "%", "=", "+=", "-=", "*=", "/=", "%=", "&&", "||", "!", ",", ";", "(", ")", "[", "]", ".", ":", "ID", "VAR", "FUNC", "MAIN", "IF", "WHILE", "FOR", "DO", "ELSE", "ARRAY", "INT", "DOUBLE", "STRING" }; return list[ ttoken.id]; } /** * getNextToken gibt die struct Token mit dem jetzigen Token und dazugehörigen Inhalt aus. * @return Token mit Inhalt */ Token getNextToken(); private: Token ttoken; //!< Token zur rückgabe. char *tchar; //!< Jetzige Buchstaben. int16_t tpos; //!< Jetzige Position. int16_t input_size; //!< Die länge des Input Strings. string *input_str; //!< String mit der momentanen Dateizeile. /** * nextChar erhöht die Variable pos um 1 und übergibt tchar den nächsten Buchstaben. * @return tpos, tchar */ void nextChar() { if( tpos < input_size) { tchar = (char*)input_str[ tpos ].c_str(); tpos+=1; }else{ tpos = -1; return; } return; } /** * good gibt den Status zurück ob man am Ende der Zeile angekommen ist. * @return true wenn tpos größer 0 ist. */ bool good() { if( tpos == -1) { return true; } return false; } /** * ignoreSpaces überspringt alle Leerzeichen, Tabulatoren und Zeilenumbrüche. */ void ignoreSpaces() { while( *tchar == ' ' || *tchar == '\t' || *tchar == '\r' || *tchar == '\n') { nextChar(); } } /** * ResWords prüft auf Reservierte Wörter und Funtionsnamen zB: main, if, while usw. * Falls diese nicht vorhanden sind werden sie als ID eingetragen. * @return true oder false */ bool ResWords(); /** * Operators prüft auf Logische, Vergleichs und Arithmetische Operatoren. * @return true oder false */ bool Operators(); /** * Int_Float prüft auf Interger oder Double Zahlen. * @return true oder false */ bool Int_Double(); //symbole fehlt \" überspringen /** * Symbole prüft auf Zeichen wie: : , ; ( ) [ ] usw. * @return true oder false */ bool Symbole(); //Überprüfen ob String oder Char };
lexical.cpp
bool Lexical::ResWords() { string buf; while( *tchar != ' ' ) { buf += *tchar; nextChar(); } if( buf.size() != 1 ) { for( int16_t i=0; StrStdFunc[i] != " "; i++) { if( buf[0] == StrStdFunc[i][0] ) { if( buf.size() == StrStdFunc[i].size() ) { if( buf.compare( StrStdFunc[i]) == NULL ) { ttoken.id = TToken[30 + i]; } } } } if( ttoken.id == T_NIL ) { ttoken.id = T_ID; ttoken.varname = buf; } }else { tpos -= 1; return false; } return true; }
toke.h
#include <iostream> #include <string> #include <cstdint> #include <array> #define T_NIL TToken[0] /// Not In List #define T_EOL TToken[1] /// End Of Line #define T_GR TToken[2] /// < #define T_KL TToken[3] /// > #define T_KG TToken[4] /// <= #define T_GG TToken[5] /// >= #define T_GL TToken[6] /// == #define T_UG TToken[7] /// != #define T_PL TToken[8] /// + #define T_MI TToken[9] /// - #define T_MU TToken[10] /// * #define T_DI TToken[11] /// / #define T_MO TToken[12] /// % #define T_G TToken[13] /// = #define T_PG TToken[14] /// += #define T_MG TToken[15] /// -= #define T_MUG TToken[16] /// *= #define T_DG TToken[17] /// /= #define T_MOG TToken[18] /// %= #define T_AND TToken[19] /// && #define T_OR TToken[20] /// || #define T_NOT TToken[21] /// ! #define T_KOM TToken[22] /// , #define T_SEM TToken[23] /// ; #define T_LRK TToken[24] /// ( #define T_RRK TToken[25] /// ) #define T_LEK TToken[26] /// [ #define T_REK TToken[27] /// ] #define T_POI TToken[28] /// . #define T_DPO TToken[29] /// : #define T_ID TToken[30] /// z.B func1, var1 #define T_VAR TToken[31] /// Variable #define T_FUNC TToken[32] /// Funktion #define T_MAIN TToken[33] /// main #define T_IF TToken[34] /// if(): ; #define T_WHILE TToken[35] /// while(): ; #define T_FOR TToken[36] /// for(): ; #define T_DO TToken[37] /// do: while(); #define T_ELSE TToken[38] /** * if(): else: ; * if(): else if(): ; */ #define T_ARRAY TToken[39] /** * array var = {}; */ #define T_INT TToken[40] /// var = 1; #define T_DOUBLE TToken[41] /// var = 1.1; #define T_STR TToken[42] /** * var = "abc"; * var = "a"; */ /** * StrStdFunc beinhaltet alle Reservierten Wörter in Zeichenform. */ static array< string, 10> StrStdFunc = { "var", "func", "main", "if", "while", "for", "do", "else", "array", "" }; /** * NFunktion beinhaltet fremde Funktionen die nachträglich hinzugefügt worden sind. */ typedef void (*NFunc) (void); /** * Die Struktur Value mit allen Variablen zum Speichern der Werte. */ struct Value { Value() : VChar(), VString(), VInt(), VDouble() {;} char VChar; string VString; int VInt; double VDouble; }; /** * Die Struktur Token beinhaltet das Token mit den Informationen. */ struct Token { Token() : id(), value(), varname() {;} /** * id zeigt die Tokennummer an. */ uint8_t id; /* * varname beinhaltet die Namen von Variablen und Funktionen. */ std::string varname; /** * value beinhaltet char, strings, integer und doubles. */ Value value; };
und an einem .ini Dateienparser aber die hab ich geschrieben als ich angefangen hab c++ zu lernen und dementsprechend sieht auch der Code aus :
https://sourceforge.net/projects/xiniSry das ich nicht mehr zeigen kann.
-
CCodex schrieb:
Ich programmier nur in C++ und mit C hab ich mich noch nicht so viel beschäftig, aber in C++ könnte ich dir einen Parser schreiben.
ist sicher keine schlechte übung und wird schnell mal unterschätzt, aber mach dir nicht zu viel hoffnung.
eig. ist es auch unsinn, weil bis auf eine externe library alles c ist. daher könntest du von uns sicher nicht viel über c++ lernen und wenn das die sprache deiner wahl ist, bist du in einem klassischen c++ projekt sicher besser aufgehoben.