Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Folge von Vektoren einem Vektor zuordnen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.09.2006, 17:21 Uhr
Xedosh



Hallo an alle Anwesenden,

weiß jemand wie ich eine Folge von Vektoren, bspw. s[0]...s[4] (die z.B. das Wort Hallo repräsentieren) auf einen anderen Vektor, bspw k[], kopieren kann?

Lieben Gruß,

Andy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.09.2006, 17:23 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


was genau meinst du mit vektor?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.09.2006, 17:28 Uhr
Xedosh



Ich benutze bei der Verwendung des Wortes "Vektor" lediglich den Sprachgebrauch aus dem C-Programmierlernbuch von Kernighan/Ritchie, indem ein Vektor ein Zeichen ist, das zwar eine Variable ist, aber unterschiedlich Werte durch eben die in eckigen klammern angegebenen Werte annehmen kann.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.09.2006, 17:42 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ok du meinst also einfach nur ein array....

in c gibt es keinen datentyp string. daher bildet man strings als char-arrays ab. nach dem letzten buchstaben wird der string "null terminiert"...

wen du strings kopieren willst kannst du strcpy verwenden...

für das kopieren nomaler arrays geht memcpy oder du nimmst halt eine schleife und kopierst jedes element einzeln...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.09.2006, 17:57 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


strcpy? strcpy ist bad: Grund: das schreibt soviel von quelle nach ziel wie quelle lang ist und prüft nicht ob das überhaupt in ziel reinpasst => strncpy benutzen.

Ansonsten: Natürlich kann man Vektor dazusagen - in nem C++-Forum gibt das natürlich leicht verwirrung - da es einen C++-Datentyp "vector" gibt. In C gibts nur gute-alte Arrays

z.b:


C++:
char a[2];



ist z.b das selbe wie


C++:
char a0, a1;



nur das man eben über die indezes anspricht und man normalerweise sicher sein kann das die "elemente" direkt hintereinander im Speicher liegen. Alle Sachen mit variable[zahl] sind zugriffe auf den jeweiligen Index des Elements, oder eben bei der Definition die Angabe der maximalen Größe. Wichtig hierzu: Indezes fangen bei 0 an.

Die char-arrays haben in C ne besondere Bedeutung - das können u.A "strings" sein, also "Zeichenketten". z.B:


C++:
const char *hallo = {"Hallo"};
char welt[] = { "Welt" };



ist so gültig. das erste ist ein Zeiger auf den konstanten Speicherinhalt 'H' 'a' 'l' 'l' 'o' '\0'
das '\0' hinten dran ist der sog. Nullterminator -> also da steht halt am "Ende" der Zeichenkette ein NULL-Byte drin, als Identifikation des Zeichenkettenendes.
der zweite Speicherbereich "welt" ist z.B 5 Zeichen lang - obwohl "Welt" ja nur 4 Buchstaben hat. Der Grund: Der Nullterminator ist noch hinten dran.

Zum kopieren/verarbeiten von Zeichenketten bietet C diverse Funktionen an, wichtige z.b:

strncpy (kopieren)
strncat (anfügen)
printf (ausgeben, nicht nur zeichenketten, sondern viel mehr)
snprintf (zum zusammensetzen von diversen Variablen oder komplexeren "Kopiervorgängen")

Gute Hilfe dazu sind die Linux-Manpages z.B die MSDN ist da sehr eigen was die Standard-C-Funktionen angeht.

+1
--
class God : public ChuckNorris { };

Dieser Post wurde am 29.09.2006 um 17:57 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.09.2006, 18:04 Uhr
0xdeadbeef
Gott
(Operator)



Zitat von FloSoft:


C++:
const char *hallo = {"Hallo"};
char welt[] = { "Welt" };




Du meinst doch wohl hoffentlich

C++:
char const *hallo = "Hallo";
char welt[] = "Welt";


Wie dem auch sei, Strings kopieren kann man wie folgt: In C++

C++:
#include <string>

// ...

std::string src = "Hallo, Welt!";
std::string dest;

dest = src; // Hier Zuweisung


In C ist es etwas komplizierter:

C++:
#include <string.h>

// ...

char src[] = "Hallo";
char dest[10]; // Länge so wählen, dass der String reinpasst

strncpy(dest, src, 10); // Der dritte Parameter ist die maximale Größe dessen, was dest aufnehmen kann - sonst gibts evtl. buffer overflows


In C wird es vor allem dann kompliziert, wenn du zur Compilezeit noch nicht weißt, wie lang der zu kopierende String höchstens sein kann. In dem Fall musst du den Speicher dynamisch anfordern und freigeben, das sieht dann so aus:

C++:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// ...

char src[] = "Hallo";
char *dest;

dest = malloc(strlen(src) + 1);

if(dest == NULL) {
  fputs("Nicht genug Speicher", stderr);
  exit(1);
}

strcpy(dest, src); // Hier wissen wir, dass src in dest passt, also ist die zusätzliche Überprüfung durch strncpy unnötig

free(dest); // Freigabe nicht vergessen, sonst gibts Speicherlecks.


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.09.2006, 18:55 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von 0xdeadbeef:

Zitat:


C++:
const char *hallo = {"Hallo"};
char welt[] = { "Welt" };




Du meinst doch wohl hoffentlich

C++:
char const *hallo = "Hallo";
char welt[] = "Welt";





ups natürlich die klammern haben sich da nun eingeschlichen. die gehören da natürlich nicht rein (hatte da erst 'H', 'a', ... stehen)

achja nochwas - ansonsten wär der vektor nicht ein einzelnes Element sondern das ganze
--
class God : public ChuckNorris { };

Dieser Post wurde am 29.09.2006 um 18:56 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: