A vllt hängt irgendwas zwischen switch und netzwerkkarte
am ende gar ein netzwerkkabel :tongue1:
A vllt hängt irgendwas zwischen switch und netzwerkkarte
am ende gar ein netzwerkkabel :tongue1:
Aber eine kurze Frage zu deinem Test Beispiel Plantschkuh!,ich sehe da kein pointer :engel:. Ich sehe das array und dann den Versuch es zu inkrementieren, was ich so verstehen wuerde das es das Array groesser machen soll. Ich wuerde halt sage das der Code gar nicht funktioniert. Aber ich wuerde hier nie an einen Pointer denken, die Antwort vom Assi hat mich deshalb verwirrt.
wie plantschkuh schon sagte verhalten sich pointer und arrays aehnlich. der gezeigte code sollte wohl nicht das array vergroeszen, sondern die adresse eins weiter zaehlen.
hier ein kleines bsp, das zeigt wie wie pointer und zugriff als array funktionieren:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
char *string;
string = malloc(sizeof(char) * 4);
if(string == NULL)
{
perror(__func__);
exit(EXIT_FAILURE);
}
string[0] = 'f';
string[1] = 'o';
string[2] = 'o';
string[3] = '\0';
printf("%s\n", string);
string++;
printf("%s\n", string);
string--;
*string = 'b';
string++;
*string = 'a';
string++;
*string = 'r';
printf("%s\n", string);
string -= 2;
printf("%s\n", string);
/* minimal spannender: */
string++;
string[0] = 'X'; /* man beachte die '0' */
string--;
printf("%s\n", string);
return 0;
}
Alles anzeigen
Der Rueckgabewert von malloc, realloc etc. braucht und soll in C nicht gecastet werden. Wenn dein Compiler ohne Cast schreit, hast du <stdlib.h> nicht inkludiert, oder du verwendest keinen C-Compiler. (C++ braucht den Cast, und viele Leute kompilieren aus Unwissenheit C als C++. Einige auch absichtlich, weil die Typueberpruefung in einigen solchen Details staerker ist. Ist eine Geschmacksfrage, ich finds nicht so sinnvoll.)
laeuft wohl wirklich auf "geschmacksfrage" hinaus. ich mach das meistens schon. ich bin aber ueberhaupt uebervorsichtig, teilweise unnoetig vorsichtig. ich setze auch bei ifs die '{}' wenn ich nur einen aufruf habe. beim mallocen hab ich mir auch angewoehnt immer 'sizeof()' zu verwenden, auch wenn es ein 'char' ist.
Erfahrungswerte? -O3 verwend ich fast nie, mit -O2 waeren mir aber noch nie Compilerbugs aufgefallen.
ich hab den code leider nicht mehr auf lager, also muesztest du mir folgendes glauben: ich hatte einen socket deskriptor mit dem wert '3', was einsichtig ist. nach einem function call (auch wenn ich in der function nur ein 'return' gemacht habe), war der deskriptor '0'. das betraf den default gcc von ubuntu 7.10 mit '-O2'. auf einem anderen pc unter gentoo mit aelterem compiler hat mir der gcc nicht danebengehaut. '-O0' unter ubunut hat aber funktioniert. ich hab dann bei ubuntu einfach einen neueren genommen und dann gings wieder. das war gcc v4.1 vs. v4.2.
[edit] pc stimmt nicht ganz. es waren beides ppc[/edit]
Wäre nichtrichtig? Du kriegst ja einen Pointer, mit *numbers=... schreibst du den aber an die Speicherstelle, an die der (alte) Pointer zeigt, anstatt den Pointer numbers an die Stelle zu verbiegen, auf die der Pointer zeigt, den du von realloc kriegst.
den code hat er ja leider wieder geloescht, aber imo war es ein pointer auf einen pointer.
Fuer was ist denn das -O2 gut? Ich weis irgendwas mit structs aber wuerde gerne genaueres wissen
das gibt an wie stark der compiler deinen code optimieren soll. zu starke optimierung kann schon mal in die hose gehen.
Kurze andere Frage:
Ich wollte gerade realloc testen in meinem Programm. Es tut auch die gewuenschte groesse reallocieren ABER, es gibt ein paar Werte die komisch sind, im erweiterten Teil. Sind nicht alle aber manche haben den Wert -0 und 3 von ihnen den Wert 39615136492207134461438014706212143104.000000. Nach diesem Wert kommt am ende wieder ein Korrekter Wert im letzen Index, naemlich 0.
Zitat von man reallocAlles anzeigen
realloc() changes the size of the memory block pointed to by ptr to size
bytes. The contents will be unchanged to the minimum of the old and new
sizes; newly allocated memory will be uninitialized. If ptr is NULL, the
call is equivalent to malloc(size); if size is equal to zero, the call is
equivalent to free(ptr). Unless ptr is NULL, it must have been returned
by an earlier call to malloc(), calloc() or realloc(). If the area
pointed to was moved, a free(ptr) is done.
man pages sind eine tolle sache. verwende sie!
Das blöde ist halt, dass sich einige Libraries nicht an diese Empfehlung halten. Dadurch hat man dann halt, wenn man so eine Include-File einbindet, gleich ein paar Screens voll Warnungen, gegen die man eigentlich nichts machen kann.
hm, man sollte halt libs von leuten meiden, die keine ahnung vom programmieren haben. bevor mein code nicht bei "-ansi -Wall -pedantic" ohne fehlermeldungen durchlaeuft zeige ich ihn nicht her. ich weisz, das liefert noch lange keine aussage ob es guter code ist, aber es ist imo eine grundvoraussetzung.
wenn man etwas MatLab kompatibles/aehliches sucht, kann man auch das freie octave verwenden. damit geht zumindest alles was man fuer "signale und systeme 2" braucht. matlab hat vlt. den vorteil, dass man es auch bei anderen lehrveranstaltungen brauchen kann. matlab/simulink wurde zumindest bei "simulation VO/LU " und bei "distributed real-time systems engineering VO/LU" eingesetzt. das betrifft die technischen informatiker, wie es bei den anderen zweigen ausschaut weisz ich nicht.
da hattest du schlicht glueck, dass der beriche frei war. wenn du in einen bereich schreibst in dem du nichts verloren hast (der nicht allokiert wurde), dann kann dir das programm auch segfaulten, weil die memory protection vom OS zuschlaegt.
Bist ja [Plantschkuh!] eine ziemliche C-Crack-Kuh!
ich denk mir auch immer wieder er/sie hat zum fruehstueck nicht gras sondern den C-standard gefressen
Core wird keiner erzeugt bzw weiß ich ned wo der liegt (sollte ja im PWD des Users liegen, Nagios wird aber ueber init skript gestartet)
mehr geraten als gewuszt, aber den dump wird er, falls er einen ablegt, im current working directory ablegen. schreib dir das current working directory in ein file (man getcwd). vlt bringt dich das dem debugging ein bissl naeher.
den restricted treiber kannst du ganz leicht einschalten. so wie es auf dieser seite gezeigt wird. der rest sollte automatisch funktionieren. zb hat mir mein system beim einschalten des restricted treibers fuer meine broadcom wlan-karte gleich die firmware aus dem netz gezogen.
Die Geschwindigkeit von OpenGL-Anwendungen war nicht gerade berauschend. Ich weiß von meinem anderen PC noch dass durch den offiziellen Treiber doch einiges mehr rauszuholen sein kann.
ich denke du verwechselst hier etwas. und zwar den "nv" treiber, der eben nicht alle kunststueckerl spielt und den restricted nvidia treiber der sich sehr wohl in den ubuntu repositories befindet. dieser restricted treiber ist der offizielle nvida treiber. und ich denke genau den hat auch Paulchen gemeint. den restricted treiber aus dem ubunut repository.
ich verstehe aber noch nicht ganz dein problem. schreibst du ein nagios plugin? die kann man imo (schon laenger her dass ich da was geschrieben habe) standalone von der shell starten. zum gdb gibt es ein vernuenftiges buch das von der gnu-press veroeffentlicht wird. ich habe hier zwar die gedruckte version rum liegen, aber wenn es schon gnu-press ist, wird es das buch wohl online geben. an printf-debugging wirst do ja wohl schon gedacht haben
ganz generell brauchst du bei prototypen keine variablen benennen (ich denke das deuten deine "..." an). es reicht der typ:
statt
schau dir mal folgende seite an. da wird erklaert wie man fktptrs schoen mit hilfe von typedefs loest.
HTH
waere es nicht einfacher in dem fall die fftw einfach aus dem source zu kompilieren?
ich fuelle ja solche frageboegen gerne aus, auch wenn ich denke sie haben in sinnvollen arbeiten nichts verloren, aber warum muessen sie immer so undurchdacht sein? ich habe schon laenger keinen hier gefunden der nicht total schwammig oder unlogisch aufgebaut gewesen waere.
"Wie lange sind Sie schon bei Ihrem Hausarzt?" monate und jahre sind anzugeben. und schwups das wars fuer mich auch schon. woher soll ich das bitte wissen? da waeren ranges wohl sinnvoller.
Das war bei den Grünen vor nicht allzu langer Zeit auch so. Würden alle so denken, wärn die heute nicht im Parlament.
prinzipiell gebe ich dir da schon recht, es braucht schon mut zum risiko und viel optimismus um eine neue politische gruppierung zu starten. ich denke aber, dass die situation bei den gruenen anders war. mit themen wie "zwentendorf" und "hainburg" hatte man es sicher leichter, als mit datenschutz fuer den sich leider kaum jemand zu interessieren scheint.
Urgs, die Lizenzfalle?
wegen der uebernahme durch nokia? dann simma mal froh, dass es die tolle gpl gibt und qt4 unter gplv2/v3 steht, nicht wahr?
und wenn nokia die entwicklung der freien qt einstellt, kann die "kde free qt foundation "uebernehmen und unter bsd-lizenz veroeffentlichen.
ich hoffe aber auch, dass nokia nicht "reinpfuscht", sehe aber bisher keine grosze gefahr. aber du bist da sicher besser informiert. ich find qt4 nur besser als gtk, das wars auch schon. um guis mach ich gern einen groszen bogen.
das tutorial schmeisz gleich mal weg wuerde ich vorschlagen.
ich möchte mir auch ein paar Grafikfunktionen ansehen, aber dazu brauch ich ja den Grafikmodus.
C/C++ hat keinen "grafikmodus", du musst dir eine (widget) library aussuchen die dir gefaellt und mit hilfe dieser kannst du dann GUIs programmieren. voraussetzung dafuer ist aber, dass man mit der zugrunde liegenenden sprache vernuenftig umgehen kann.
es gibt natuerlich noch mehr, aber auf die schnelle fallen mir folgende ein:
windows:
*) WinAPI
*) MFC
*) WindowsForms (.net)
mac:
*) cocoa
cross platform:
*) gtk+/gtkmm
*) qt
*) wxWidgets
welche sollst du nun verwenden? QT natuerlich.
Hallo,
kennt jemand von euch ein gutes Tutorial für DATEIBEARBEITUNG?
folgendes ist nicht als "rtfm" misszuverstehen, ich denke mit den folgenden man-pages kommst du schon recht weit. so kannst du dir anschaun was die einzelnen kommandos so tun und hast am ende der page auch gleich eine uebersicht ueber weiterfuehrende kommandos:
ich gebe zu dass man zum lesen/verstehen von man-pages etwas uebung braucht. aber wenn du weiszt welches kommando du verwenden willst, findest du bei google mit "$kommando example" sehr schnell ein ausprogrammiertes beispiel. und wenn man man-pages mal gewohnt ist, gibt es nichts schnelleres/besseres um schnell die syntax eines kommandos nachzuschlagen und um zu sehen was nun der return-wert ist, welche includes man braucht uswusf.
hth.