| Autor |
Nachricht |
mrpool89
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.07.2012
Beiträge: 7
|
mrpool89 Mitglied
14:29:33 30.07.2012 Titel: |
|
Zitieren |
Ok. Wenn ich beispielsweise so ein Array anlege:
| C++: | | int* numbers = new int[10]; | |
dann die funktion aufrufe
| C++: | | readPowersFromTextFile(filename, *numbers, exp); | |
in der so das Array befülle
| C++: | for (int i = 0;i < 10; i++) {
numbers[i] = strtok(NULL, &trennzeichen);
} | |
sagt er mir:
| Code: | | Error: Der Ausdruck muss den Typ "pointer-to-object" aufweisen | |
Das ist ja der eigentliche Kern meiner frage gewesen.
Mal abgesehen vom der Speicherreservierung aufm Heap, sollte doch das wenigstens funktionieren. |
Zuletzt bearbeitet von mrpool89 am 14:33:13 30.07.2012, insgesamt 1-mal bearbeitet |
|
 |
Swordfish
Mitglied
Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 4335
|
Swordfish Mitglied
14:48:20 30.07.2012 Titel: |
|
Zitieren |
Ein Sternchen zuviel...
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <iostream>
void foo( int *p ) {
for( size_t i = 0; i < 10; i++ ) {
p[i] = i + 1;
}
}
int main( )
{
int *numbers = new int[10];
foo( numbers );
for( size_t i = 0; i < 10; ++i ) {
std::cout << "numbers[ " << i << " ] = " << numbers[ i ] << '\n';
}
delete [] numbers;
} | |
| mrpool89 schrieb: | | C++: | | strtok(NULL, &trennzeichen); | |
|
Was soll dabei 'rauskommen?
ot @others: Wie lang' sind denn noch Ferien!? |
|
|
|
 |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 18395
|
SeppJ Moderator
14:57:01 30.07.2012 Titel: |
|
Zitieren |
| mrpool89 schrieb: | Ok. Wenn ich beispielsweise so ein Array anlege:
| C++: | | int* numbers = new int[10]; | |
| Dann ist das C++ und wir brauchen an der Stelle gar nicht erst weiter reden, denn in C++ würde man den Rest ganz anders machen.
| Zitat: |
dann die funktion aufrufe
| C++: | | readPowersFromTextFile(filename, *numbers, exp); | |
| Dann ist *numbers ind der Notation von oben vom Typ int, was nicht zur Funktionssignatur passt. Das teilt dir der Compiler mit.
| Zitat: |
in der so das Array befülle
| C++: | for (int i = 0;i < 10; i++) {
numbers[i] = strtok(NULL, &trennzeichen);
} | |
| Das ist, mit Verlaub, totaler Blödsinn. Guck mal, was strtok zurück gibt und wie man es aufruft.| Zitat: |
Mal abgesehen vom der Speicherreservierung aufm Heap, sollte doch das wenigstens funktionieren. | Nein, auch der ganze Rest ist ziemlich falsch. Dir fehlen einfach die Grundlagen, egal wie sehr dir das nicht gefällt. Wenn einfache Funktionsaufrufe schon falsch sind, dann kann der Rest auch nichts werden. Du bekommst einfach viel zu viele Nebenfehler, wenn du die einfachen Sachen nicht beherrscht. In den fünf Zeilen waren vier dicke Fehler, von denen drei mit deinem eigentlichen Problem nichts zu tun hatten. Und dabei war eine dieser Zeilen nur ein '}'!
| Zitat: | | und ja ich habe ein C Buch vom Galileo Verlag. | Hier ist das Problem. Die sind schlecht, deren Bücher.
| Zitat: | | Ich dachte man könnte mir hier einen Denkanstoß geben, was ich falsch mache. Anstatt mir zu erzählen, wieso ich die Finger von der dynamischen Speicherverwaltung lassen sollte, hätteste genauso gut in 2 Sätzen mir den Weg zur Lösung weisen können. | Das geht eben nicht, weil du die Grundlagen nicht kannst. Sonst würde ich dir schon zu helfen versuchen, aber dir zu sagen, dass du erst noch was anderes lernen musst, ist momentan die beste Hilfe, die du bekommen kannst. |
_________________ Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List
Zuletzt bearbeitet von SeppJ am 14:58:42 30.07.2012, insgesamt 1-mal bearbeitet |
|
 |
mrpool89
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.07.2012
Beiträge: 7
|
mrpool89 Mitglied
15:46:59 30.07.2012 Titel: |
|
Zitieren |
| C++: | for (int i = 0;i < 10; i++) {
numbers[i] = strtok(NULL, &trennzeichen);
} | | Damit will erreichen, dass jedes token in jeweils ein Element von numbers geschrieben wird.
| Zitat: | strtok zerlegt einen String in Token.
string1 ist der zu zerlegende String, string2 enthält die Trennzeichen, anhand derer der String zerlegt wird. |
| Zitat: | | Der erste Aufruf von strtok überspringt führende Trennzeichen, liefert einen Zeiger auf den Anfang des ersten gefundenen Token in string1 zurück |
| Zitat: | | Folgende Aufrufe von strtok mit dem Wert NULL anstelle des Arguments string1 liefern Zeiger auf weitere Token. |
Auf diese Weise bekommen ich auch die Anzahl für die Größe des Arrays ausgelesen
Textdatei:
Cpp:
| C++: | 1 2 3 4 5 6 7 8 9 10 | while (fgets(buffer, 255, datei) != NULL ){
if(strstr(buffer, search_anzahl) != 0) {
token = strtok(buffer, &trennzeichen);
if(token != NULL) {
token = strtok(NULL, &trennzeichen);
sizeofarray = atoi(token);
}
}
}
... | |
Ja ich werde mich wohl weiter selber irgendwie durchkämpfen müssen.
Ich danke trotzdem für die Antworten. |
|
|
|
 |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 18395
|
SeppJ Moderator
15:50:41 30.07.2012 Titel: |
|
Zitieren |
| mrpool89 schrieb: |
Ja ich werde mich wohl weiter selber irgendwie durchkämpfen müssen.
| Dann kann ich dir auch nicht weiter helfen. Wenn du die Grundlagen einfach nicht lernen möchtest, sondern stattdessen "kämpfen" willst, dann wirst du scheitern, das verspreche ich dir. Egal wie viel "Kampfeswille" du dir einredest. Aber ich kann dich nicht vor dir selber schützen, sag bloß nicht, dass man dich nicht gewarnt hätte. Die Grundlagen hättest du in einer Woche gelernt, nun wirst du eine Woche Fluchen und am Ende doch nichts haben und auch nichts gelernt haben. Tja. |
_________________ Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List
|
|
 |
Swordfish
Mitglied
Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 4335
|
Swordfish Mitglied
15:52:08 30.07.2012 Titel: |
|
Zitieren |
| mrpool89 schrieb: | | [...] ich werde mich wohl weiter selber irgendwie durchkämpfen müssen. |
Dort vielleicht? |
Zuletzt bearbeitet von Swordfish am 15:52:37 30.07.2012, insgesamt 1-mal bearbeitet |
|
 |
DirkB
Unregistrierter
|
DirkB Unregistrierter
16:02:05 30.07.2012 Titel: |
|
Zitieren |
| mrpool89 schrieb: | | eine Menge über strtok | nur ...
.. ein Zeiger auf int ist aber etwas anderes als ein Zeiger auf char.
Dein Array numbers und der Rückgabewert von strtok passen nicht zusammen.
Und ein 'Zeiger auf char' oder 'Array von char' muss kein String (im Sinne von C) sein. |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|