Neuankömmling sucht Hilfe (wie üblich)
-
Hallo, ich grüsse alle Mitglieder.
Ich komme eigentlich von Scriptsprachen (ASP, PHP) und hatte noch nicht viel mit normalen Programmiersprachen zu tun, meine Idee war jetzt mit C (Konsole) anzufangen.
Soweit sogut, in Google nach Tutorials gesucht, mehrheitlich gibts da solche von Hochschulen, das blöde daran, meistens sind dort nur die "einfachsten" Grundlagen drin, die ich schon fast intus habe, dann leider viel Mathe, das mir nicht soooo zusagt.
Könnt Ihr mir ein gutes Tutorial empfehlen oder ein einigermassen durchschaubaren Beispielprogramm mit dem ich rumprobieren kann?
Mir fehlt so leider der ganze Reiz.
Interessanter währe es schon, wenn ich wüsste wie ich z. B. eine Verzeichnissstrucktur der Festplatte auslesen könnte, wenn dies jemand erklären könnte?
-
SplifStar_SS schrieb:
Hallo, ich grüsse alle Mitglieder.
Interessanter währe es schon, wenn ich wüsste wie ich z. B. eine Verzeichnissstrucktur der Festplatte auslesen könnte, wenn dies jemand erklären könnte?schau in der faq nach da findest du das Thema sicher
wegen den beispielprogrammen .. das hier ist ein Forum hier findest du genuegt Beispiele die du korrigieren kannst
-
SplifStar_SS schrieb:
Interessanter währe es schon, wenn ich wüsste wie ich z. B. eine Verzeichnissstrucktur der Festplatte auslesen könnte, wenn dies jemand erklären könnte?
Ist schon mal gut, dass du dir selber eine Aufgabe stellst :). Das solltest du so weiter machen.
Zu deiner jetzigen Aufgabe empfehle ich dir, dass du dir mal das Win32-Konsole- und DOS-Forum anschaust und durchstöberst. Such einfach mal nach "Verzeichnis" ;). Die Suche ist rechts oben unter "[ Suchen ]".
Wenn du allein nicht mehr weiter kommst, dann kannst du dich gerne an uns richten (in dem Fall am besten ans Konsolen-Forum ;)).
-
und ev. noch ein link zu
www.pronix.de
da gibt es ein openbook zu c
-
Vielen Dank für die Antworten, das Openbook sieht gut aus!
Öhm, hab hier eine Referenz von ANSI C, soweit es scheint, kann mann mit C alleine nicht viel anfangen, sind meine Vermutungen richtig?Alles selber basteln währe wohl etwas zuviel verlangt denke ich.
Wo und welche "Bibliotheken" verwendet man für den Anfang, nur schon wenn ich mit Datenbanken und dem Dateisystem (Browsing etc...) arbeiten möchte.
Vielen Dank für eure Mühe
Gruss aus der Schweiz, Peter
-
Für jede Datenbank gibts eine eigene Bibliothek, außer du benutzt ein Interface wie z. B. ODBC. Ansonsten sind die Bibliotheken bzw. Funktionen datenbankspezifisch.
Beim Dateisystem (Verzeichnisse) siehts ähnlich aus. Das ist betriebssystemspezifisch. D. h. du musst Bibliotheken und Funktionen des jeweiligen Betriebssystems nutzen. Die Dateiverarbeitung selbst funktioniert auch mit einfachem ANSI-C.
Wie bereits erwähnt, schau am besten mal ins Konsolen-Forum und stöber dich da mal durch. Da gibts Hunderte Threads mit diesen Themen. Wenn du eher was für Linux programmieren willst, dann solltest du natürlich ins Linux-Forum schauen :).
-
Danke euch für euer Hilfe, hab Heute wieder ein bisschen angefangen.
Wollte fragen ob mir jemand per ICQ oder MSN ab und zu eine kleine Frage beantworten könnte, damit ich weiterkomme.
So ähnlich wie diese
Von VB her kenne ich die Mid() Funktion.
Also Mid(string, anfang, länge)
Habe lange im Internet gefunden und ein selbstgeschriebenes C Deriverat gefunden, naja es funktioniert nicht, vielleicht hat jemand ein besseres oder findet die Fehler in dieser Funktion, danke!
char *mid(char *dest, const char *src, int start, int len = -1) { if (len == -1) len = strlen(src) - start; strncpy(dest, src+start, len); *(dest+ (len-start)) = 0; return dest; }
Bin schon ein bisschen weiter, naja der Funktionsweise noch nicht ganz bewusst
char* mid(const char* src, int start, int len) { char* s_return; len = strlen(src) - start; strncpy(s_return, src+start, len); *(s_return+ (len-start)) = 0; return s_return; }
Gruss Peter
-
SplifStar_SS schrieb:
Bin schon ein bisschen weiter, naja der Funktionsweise noch nicht ganz bewusst
char* mid(const char* src, int start, int len) { char* s_return; //wie DIM (so hieß es doch oder?) in VB is das - variablendeklaration len = strlen(src) - start; //strlen = stringlänge strncpy(s_return, src+start, len); //strncpy -> man strncpy *(s_return+ (len-start)) = 0; //versteh ich das richtig? das letzte //char vom teilstring auf 0 setzen... wobei das eigentlich lt. //man > strncpy machen sollte... return s_return; //zurückgeben }
sieht nach einer art "substr()" funktion aus (dh: teilstring [von, länge]) zurückliefern.
was ist dir sonst noch nicht klar? (hab jetzt keine ansi C comments gemacht!)hth,
ciao
-
Danke für deine Antwort, ja in PHP bekannt als substr(); in VB Mid().
Dim, genau, oder in JS var
Wollte nur ein Script von mir nachbauen um zu üben, dazu fehlte mir aber die Mid() Funktion, hab diese Funktion nicht selber geschrieben, ist eine im Web "gefundene", funktioniert aber nicht so ganz wie sie soll.
Es kommen keine Fehler mehr aber die Ausgabe sind reine Zahlen..?
Hier ein Beispiel:
#include <stdio.h> #include <stdlib.h> #include <string.h> char* mid(const char* src, int start, int len) { char* s_return; //wie DIM (so hieß es doch oder?) in VB is das - variablendeklaration len = strlen(src) - start; //strlen = stringlänge strncpy(s_return, src+start, len); //strncpy -> man strncpy *(s_return+ (len-start)) = 0; //versteh ich das richtig? das letzte //char vom teilstring auf 0 setzen... wobei das eigentlich lt. //man > strncpy machen sollte... return s_return; //zurückgeben } int main(int argc, char *argv[]) { printf("%d", mid("Irgendein Text", 2, 5)); system("PAUSE"); return 0; }
-
try
printf("%s", mid("Irgendein Text", 2, 5));
%d is für ints.
hth
-
Jo nimm %s. Und dass das Teil nicht segfaultet ist eh ein Wunder. Du hast für "s_return" überhaupt keinen Speicher reserviert.
Und warum du den Parameter "len" übergibst ohne ihn irgendwie auszuwerten bevor du ihn überschreibst verstehe ich auch nicht ganz...
-
Hi Tactx, tut mir leid, ich bin Anfänger, verstehe also noch nicht viel von der "C" Materie, viellecht könntest du mir die Sachen erklären?
Die Funktion hab ich nicht selber geschrieben, sondern gefunden, dieses Beispiel sollte als Ergebniss Haus liefern, damit sie äqualent zu VBScript`s Funktion Mid() arbeitet.
Was müsste ich hier ändern?
#include <stdio.h> #include <stdlib.h> #include <string.h> char* mid(const char* src, int i_start, int i_laenge) { char* s_return; i_laenge = strlen(src) - i_start; strncpy(s_return, src+i_start, i_laenge); *(s_return+ (i_laenge-i_start)) = 0; return s_return; } int main(int argc, char *argv[]) { printf("%s", mid("EinHausistHier", 4, 4)); system("PAUSE"); return 0; }
-
SplifStar_SS schrieb:
char* s_return = (char *)malloc(sizeof(char)*XXX);
wobei man natürlich die rückgabe von malloc prüfen sollte und XXX musst du durch die länge des neuen string ersetzen...
hth,
ciao
-
hephaistos6 schrieb:
SplifStar_SS schrieb:
char* s_return = (char *)malloc(sizeof(char)*XXX);
wobei man natürlich die rückgabe von malloc prüfen sollte und XXX musst du durch die länge des neuen string ersetzen...
hth,
ciaoHallo, nehme an malloc() = Memory Alloc?
Was muss ich für XXX einsetzen?
Grösse des Strings?Verstehe noch nicht ganz
-
Entweder mit malloc() oder du übergibst der Funktion einen Buffer wo sie das Ergebnis reinschreiben soll:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFFSIZE 20 // Nur für AJ ;) char buffer[BUFFSIZE]; int mid(const char* src, char* buff, int buffsize, int i_start, int i_laenge) { memset(buff,0,buffsize); // Buffer nullen, dann sparen wir uns auch die terminierende Null if(i_laenge >= buffsize) return 0; // Ergebnisstring waere groesser als Buffer else if( (i_start+i_laenge) > strlen(src)) return 0; // Wir wollen auch unseren src-String nicht verlassen else { memcpy(buff,src+i_start, i_laenge); // hier kopieren wir den eigentlichen String return 1; } } int main(int argc, char *argv[]) { if(mid("EinHausistHier",buffer, BUFFSIZE, 4, 10)) printf("Text: %s\n", buffer); else printf("Fehler ist aufgetreten\n"); return 0; }
Auf die schnelle würde ich das so machen...
-
Hi tactX, also jetzt kommt es mir noch spanischer vor und die Funktion liefert nicht den Teilstring denn sie sollte.
Also ab dem vierten Zeichen, vier Zeichen.
-
Er fängt auch beim 4. Buchstaben an. In C werden Strings (allg. Arrays) immer beginnen mit 0 angesprochen. Also ist das 0. Element eines Strings der 1. Buchstabe. Sicher könnte man die Funktion dahingehend abändern, da das aber C-untypisch wäre halte ich das für keine gute Idee.
Was genau verstehst du an der Funktion nicht?
-
ah okay, das mit dem index von 0 an kenn ich von den vbscript arrays,
werde mich jetzt an was anderes widmen.Vielen Dank nochmal für die Hilfe!