2 dimensionaler arry
-
hallo
habe folgendes kopier problem
char test[3][10];
Ich möchte jetzt drei char strings in den test arry kopieren
strcyp(test[0],"Test0");
strcyp(test[1],"Test1");
strcyp(test[2],"Test2");Dies scheint aber irgendwie nicht zu funktionieren, da er alle drei strings aneinander fügt. Was mache ich falsch?
-
char test[3][10]; strcpy( &test[0][0], "Test0" ); // Anfang des ersten Zeichens des ersten Stringpuffers strcpy( &test[1][0], "Test1" ); // Anfang des ersten Zeichens des zweiten Stringpuffers strcpy( &test[2][0], "Test2" ); // Anfang des ersten Zeichens des dritten Stringpuffers
-
poweroff, das ist unsinnig.
seine variante wuerde prima funktionieren, wenn er es "strcpy" und nicht falsch schreiben wuerde.
#include <stdio.h> #include <string.h> int main(void) { char test[3][10]; int i; strcpy(test[0], "Test0"); strcpy(test[1], "Test1"); strcpy(test[2], "Test2"); for (i = 0; i < 3; ++i) printf("%s\n", test[i]); return 0; }
-
c.rackwitz schrieb:
poweroff, das ist unsinnig.
Nein, deutlicher!
-
Power Off schrieb:
c.rackwitz schrieb:
poweroff, das ist unsinnig.
Nein, deutlicher!
Nein!
-
falsch! schrieb:
Nein!
Kannst das C Lernbuch von Thomas Plum bestrafen, mit dem ich das 1986 gelernt habe!
Der Punkt dabei ist uebrigens, dass man bei der Zuweisung bzw. Uebergabe von Zeigern zeigt, wo genau der Zeiger hinzeigt.
Was wirklich passiert ist, dass bei
char test[1][10]; strcpy( test[0], "test" );
in Wirklichkeit
char test[1][10]; strcpy( &test[0][0], "test" );
uebergeben wird. Daher ist es besser, es gleich so zu schreiben. So der Ansatz des Buches.
char test[1][10]; strcpy( test[0], "test" );
kann leicht zu Missverstaendnissen bei weniger erfahrenen Programmierern fuehren (laut Buch).
Deswegen mache ich es auch immer so.
-
ahja, alles klar...
char fasel[] = "Hallo Welt!"; printf("%s", &fasel[0]);
sowas find ich grotesk.
"missverstaendnisse bei anfaengern"? wenn du kein anfaenger bist, dann musst du es nicht so machen. immerhin wuerdest du dir dann 4 zeichen einsparen.
-
c.rackwitz schrieb:
"missverstaendnisse bei anfaengern"? wenn du kein anfaenger bist, dann musst du es nicht so machen. immerhin wuerdest du dir dann 4 zeichen einsparen.
I.d.R. mache ich das nur bei mehrdimensionalen Arrays.
Das ruft mir auch beim Lesen sofort immer den Speicheraufbau ins Gedaechtnis:
char beta[3][4]; strcpy( &beta[0][0], "ABC" ); strcpy( &beta[1][0], "DEF" ); strcpy( &beta[2][0], "GHI" );
sieht im Speicher z.B. so aus:
column 0 1 2 3 address row 0X00100BA0 0 'A' 'B' 'C' '\0' 0X00100BA4 1 'D' 'E' 'F' '\0' 0X00100BA8 2 'G' 'H' 'I' '\0'
-
ich find auch x[nummer][nummer] -nicht noetig- aber uebersichtlicher. ein hacker wuerde x[nummer] schreiben. fuer anfaenger und lesbarkeit des codes ist sicher x[nummer][nummer] besser!
findet ihr nicht?
-
Power Off schrieb:
Was wirklich passiert ist, dass bei
char test[1][10]; strcpy( test[0], "test" );
in Wirklichkeit
char test[1][10]; strcpy( &test[0][0], "test" );
uebergeben wird.
In "Wirklichkeit" wird wohl eher so was draus:
&*(*(test+0)+0) //gekürzt *test
--linuxuser-- schrieb:
ich find auch x[nummer][nummer] -nicht noetig- aber uebersichtlicher. ein hacker wuerde x[nummer] schreiben. fuer anfaenger und lesbarkeit des codes ist sicher x[nummer][nummer] besser!
findet ihr nicht?
Was du nur mit deinen "Hackern" hast.
-
AJ schrieb:
--linuxuser-- schrieb:
ich find auch x[nummer][nummer] -nicht noetig- aber uebersichtlicher. ein hacker wuerde x[nummer] schreiben. fuer anfaenger und lesbarkeit des codes ist sicher x[nummer][nummer] besser!
findet ihr nicht?
Was du nur mit deinen "Hackern" hast.
was dagegen?
-
--linuxuser-- schrieb:
AJ schrieb:
--linuxuser-- schrieb:
ich find auch x[nummer][nummer] -nicht noetig- aber uebersichtlicher. ein hacker wuerde x[nummer] schreiben. fuer anfaenger und lesbarkeit des codes ist sicher x[nummer][nummer] besser!
findet ihr nicht?
Was du nur mit deinen "Hackern" hast.
was dagegen?
Nur wenn es Amateurprogrammierer sind, die sich Hacker schimpfen, nur weil sie ein paar Progrämmchen vom I-Net gezogen und den Hackerz Guid oder sowas ähnliches gelesen haben.
-
--linuxuser-- schrieb:
AJ schrieb:
--linuxuser-- schrieb:
ich find auch x[nummer][nummer] -nicht noetig- aber uebersichtlicher. ein hacker wuerde x[nummer] schreiben. fuer anfaenger und lesbarkeit des codes ist sicher x[nummer][nummer] besser!
findet ihr nicht?
Was du nur mit deinen "Hackern" hast.
was dagegen?
Ich sag's mal so: Es kommt einfach ultrapeinlich immer zu labern "wie das denn die Hacker machen" wenn man selbst kaum in der Lage ist gescheiten C-Code zu liefern um anderen damit zu "helfen".
-
ja ich weis aber nicht wie du da auf mich kommst und ausserdem bist du auch so einer(so kommst du mir zumindest vor) der denkt hacker sind die die einfach boese sind! ich definiere den hacker so(kann natuerlich auch schwachsinn sein aber du weist mich sicher wieder zurecht:-)): ein hacker ist ein programmierer der einfach spass am programmieren hat und gerne tueftelt und auch an anderen programmen rumspielt und spass daran hat sicherheitsluecken im programm zu finden oder auch einfach nur ein programm besser versteht als andere und einfach extrem techtnikbegeistert ist! und ICH NENN MICH SELBST NICHT HACKER das wirst du auch nirgends lesen koennen und auch in zukunft mirgends lesen werden!!!!!
ps hackerz guidz GIBT ES NICHT!!
ps waenn ich euch mit dem thema hacker am falschen fuss erwischt habe werde ich in zukunft meine klappe nicht mehr so aufreissen!! versprochen!
-
--linuxuser-- schrieb:
ps hackerz guidz GIBT ES NICHT!!
Deswegen hab ich ja auch "oder so ähnlich" geschrieben
Also ich definiere Hacker anders:
Hacker sind Leute, die sich gern in fremde Systeme einschleichen bzw. einbrechen und teilweise dies auch aus Böswilligkeit machen und damit einiges anstellen (bis hin zu Diebstahl). Andererseits gibts aber auch Hacker, die sich ihr Geld damit verdienen Systeme vor böswilligen Hackern zu schützen (wobei sie vielleicht selber mal zu der Gruppe böswilliger Hacker gehört haben).Aber eines haben die richtigen Hacker gemeinsam: Sie sind Profis!
-
nochmal zu dem thema hackern...
--linuxuser-- hatte mit seiner definition von hackern schon recht siehe:
klickmich oder hier
klickmich (auf englisch)das was Aj gemeint hat sind cracker:
klickmich oder hier
klickmich (auf englisch)
also leute bitte keine verwechselungen mehrlg icepacker
-
icepacker schrieb:
nochmal zu dem thema hackern...
--linuxuser-- hatte mit seiner definition von hackern schon recht siehe:
klickmich oder hier
klickmich (auf englisch)das was Aj gemeint hat sind cracker:
klickmich oder hier
klickmich (auf englisch)
also leute bitte keine verwechselungen mehrlg icepacker
Les nochmal selber nach:
Cracker sind Leute, die Programme manipulieren um z. B. Kopierschutzmaßnahmen zu umgehen und das Wort kann als Synonym (ist mir zwar neu, aber wenn se meinen) für einen destruktiven Hacker (= böswilliger Hacker aus meiner Erklärung) verwendet werden.
Und wie schon gesagt: Hacker sind Profis. Das schließt ein sehr gutes Wissen was Programmierung und Netzwerktechnik angeht voll mit ein.
-
AJ schrieb:
Und wie schon gesagt: Hacker sind Profis. Das schließt ein sehr gutes Wissen was Programmierung und Netzwerktechnik angeht voll mit ein.
genau das meine ich!