Datum: 26.06.2008 15:20
Hi, ich brauche ihre Hilfe. Wie kann ich ein zweidimensionales Array in einer eindimensional Array kopieren.Jeder Wort im eindimensional durch ZB ein leeres Zeichen trennen. Danke
Datum: 26.06.2008 15:28
Deine Problembeschreibung und dein angehängtes Zip-Archiv mit diversen XML-Dateien sind IMHO nicht ausreichend, um das Problem zu verstehen, geschweige denn, um eine hilfreiche Antwort zu geben.
Datum: 26.06.2008 23:09
Hi, mit dem Bild erkläre ich am besten was ich empfangen will
Datum: 26.06.2008 23:16
> und dein angehängtes Zip-Archiv mit diversen XML-Dateien
Meinst du damit das OpenDocument-File? Es wäre sicher einfacher, das
z.B. in OpenOffice anzusehen, statt es zu entpacken und den Inhalt im
Texteditor zu betrachten ;-)
Datum: 26.06.2008 23:34
Ah, OpenDocument ist das. Hatte noch nicht das Vergnügen. Ich hatte Bild.odg heruntergeladen, weil manche Leute die abartigsten Dateinamen und -endungen für ihre Bilder wählen. Ich spekulierte darauf, dass ein halbwegs aktueller Bildbetrachter (Irfanview) das Bild öffnen kann. Beim Download hatte Seamonkey dann automatisch aus Bild.odg Bild.odg.zip gemacht. Und da war mein Schritt zum Auspacken mit 7-ZIP ein kleiner... Mir wäre es angenehmer, Pierre hätte die Problemstellung in einem einfachen Text geschildert. Dann bräuchte ich ausser dem bereits geöffneten Webbrowser kein extra Programm zum Betrachten, OpenOffice habe ich nicht installiert und auch keinen Reader für *.docx
Datum: 27.06.2008 21:50
hi, noch ein anderes Format, ich hoffe es wird jetz klappen. Danke
Datum: 27.06.2008 23:33
Gast wrote: > hi, > noch ein anderes Format, ich hoffe es wird jetz klappen. > Nicht besonders aussagekräftig. Aber meine Glaskugel hat mir einen Tipp gegeben (damit mal was witer geht in diesem Thread)
#include <string.h> int main() { char texte[][8] = { "Wort1", "Wort2", "Wort985" }; char komplett[512]; int i; komplett[0] = '\0'; // fange mit einem Leerstring an for( i = 0; i < 3; ++i ) { strcat( komplett, texte[i] ); // das nächste Wort hinten anhängen strcat( komplett, " " ); // und dann noch einen String bestehend // aus einem Leerstring anhängen } printf( "%s", komplett ); } |
Datum: 30.06.2008 10:57
hi,
ich glaube, dass ich mein Problem falsch vorgestellt habe.
ich habe die Variable so definiert
uint16_t string[4]; Eigentlich soll der Inhalt einer anderen Variable
Beispiel buffer in string kopiert
for( int i = 0; i < 5; ++i ) {
stringt[i]=Ptr->buffer[8];
printf( "0x%x", string[i] );
}
dann bekomme ich Zum Beispiel:
string[0]=Wort1;
string[1]=Wort2;
string[2]=0x20 usw..
aber ich will nicht jetzt das zweidimensional Array so definiert, weil
die Werte ständig verändert werden können.
char texte[][8] = { "Wort1", "Wort2", "0x20" "Wort985" };
sondern jedes Mal der Inhalt von string[0], string[1] in der Variable
texte haben.
char texte[][8] = { "string[0]", "string[1]"}; ( natürlich falsch aber
ungefähr in dieser Form).
Danke
Datum: 30.06.2008 11:48
Gast wrote: > hi, > ich glaube, dass ich mein Problem falsch vorgestellt habe. Das denke ich auch. > char texte[][8] = { "Wort1", "Wort2", "0x20" "Wort985" }; > sondern jedes Mal der Inhalt von string[0], string[1] in der Variable > texte haben. > char texte[][8] = { "string[0]", "string[1]"}; ( natürlich falsch aber > ungefähr in dieser Form). Es ist immer noch nicht klar, was du eigentlich willst. Frage: Sind da jetzt Strings (also Zeichenketten) im Spiel oder nicht. Hol doch mal etwas weiter aus und beschreibe dein Problem (und nicht das was du denkst was die Lösung deines Problems ist)
Datum: 30.06.2008 11:48
Gast wrote: > hi, > ich glaube, dass ich mein Problem falsch vorgestellt habe. > ich habe die Variable so definiert > uint16_t string[4]; Eigentlich soll der Inhalt einer anderen Variable > Beispiel buffer in string kopiert > > for( int i = 0; i < 5; ++i ) { > stringt[i]=Ptr->buffer[8]; > printf( "0x%x", string[i] ); > } > dann bekomme ich Zum Beispiel: > string[0]=Wort1; > string[1]=Wort2; > string[2]=0x20 usw.. > aber ich will nicht jetzt das zweidimensional Array so definiert, weil > die Werte ständig verändert werden können. > char texte[][8] = { "Wort1", "Wort2", "0x20" "Wort985" }; > sondern jedes Mal der Inhalt von string[0], string[1] in der Variable > texte haben. > char texte[][8] = { "string[0]", "string[1]"}; ( natürlich falsch aber > ungefähr in dieser Form). > > Danke Angenommen du hast ein Array von z.B. 5 Worten, die zu Programmanfang bereits irgendwie vorbelegt sind char *worte[5] = { "wort1", "wort2", "wort3", "wort4", "wort5" }; Aber die Worte können im Programmablauf auch geändert werden z.B. worte[3] = "neueswort"; oder { static char buffer[42]; strcpy(buffer, "irgendwasdynamisches"); worte[4] = buffer; } Jetzt hapert es mit deiner Beschreibung, weil man kann drei Fragestellungen aus deinem Posting herauslesen... Die erste Lesart, passend zum allerersten Posting, hat KHB bereits oben vorgestellt, indem eine Extrafunktion alle Worte in einen langen Text kopiert. Ich kann mir keinen Weg vorstellen, das in C zur Laufzeit ohne eine Extrafunktion automatisch machen zu lassen. Wenn du die Worte aus einem 1D-Array in ein anderes 2D Array umkopieren willst, wäre sowas machbar #define MAXDIM 8 char texte[5][MAXDIM]; for (i = 0; i < 5; i++) { strncpy(texte[i], worte[i], MAXDIM-1); texte[i][MAXDIM-1] = '\0'; } Eine andere Lesform wäre, dass du weiter mit Pointern arbeitest. Und zwar so char *worte[5] = | "wort1", "wort2", "wort3", "wort4", "wort5" |; char **texte[5] = { &worte[0], &worte[1], &worte[2], &worte[3], &worte[4] }; Das bewirkt z.B. worte[1] ist "wort2" texte[1] ist die Adresse (& Operator) von "wort2" Der Inhalt (* Operator) von *texte[1] ist dann "wort2" Änderst du worte[1] im Programm dynamisch, bleibt texte[1] weiter die Adresse von worte[1], aber bei der Dereferenzierung über *texte[1] bekommst du den geänderten Inhalt.
Datum: 30.06.2008 12:07
hi,
ja es sind Zeichenketten im Spiel,die im ASCII kodiert sind.Ich möchte
nur der Inhalt im Hezadezimal haben.Ich denke es ist besser wenn ich
das Problem im for schleife lösen kann. Bei mir bleibt die Werte von
Komplett immer gleich.
for( int i = 0; i < 5; ++i ) {
strcat( komplett,string[i] );
strcat( komplett, " " );
printf( "0x%x", string[i] );
printf( "0x%x", komplett );
}
Danke
Datum: 30.06.2008 15:13
Stefan "stefb" B. wrote:
> worte[3] = "neueswort";
Also da muss ich ja schmunzeln ;)
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel
