zyklische warteschlange für strings! :/
-
äh nein du sollst kein feld von chars nehmen sondern ein feld von char-pointers (also char* )... ist so als wenn du ein 2d-array verwendest...
dieses feld von char* soll die feste grösse 13 haben...so und wenn du jetzt den ersten string einfügst allokierst du für den ersten charpointer speicher der entsprechenden länge...
also
warteschlange[0]=(char*)malloc(....); . . .
die aufgabe is übrigens zum thema : dynamische speicherverwaltung, also mit new und delete? oder?
also wenn du c++ verwenden darfst jo dann nimmt man new und delete wobei dass dann in deinem fall keinen sinn mehr macht weil in c++ keiner mehr freiwillig ein char-array verwendet, deshalb hatte ich vermutet das du das dann in c machen sollst wo man den speicher mit malloc und free allokiert...
-
#include <iostream> using namespace std; int main(void) { char *feld[13]; // feld aus 13 char zeigern char input[30]; cout << "eingabe: "; cin >> input; feld[0] = (char*)malloc(sizeof(input)); feld[0] = input; cout << feld[0] << endl; }
ah, ich glaub ich habs geblickt!
so klappt es dann jetzt! dankööö ..
also wenn du c++ verwenden darfst jo dann nimmt man new und delete wobei dass dann in deinem fall keinen sinn mehr macht weil in c++ keiner mehr freiwillig ein char-array verwendet, deshalb hatte ich vermutet das du das dann in c machen sollst wo man den speicher mit malloc und free allokiert...
ja, soll in c++ sein, aber der prof hat n schaden! naja, wird schon so hinhaun!
-
#include <iostream> using namespace std; int main(void) { char *feld[13]; // feld aus 13 char zeigern char input[30]; cout << "eingabe: "; cin >> input; feld[0] = (char*)malloc(sizeof(input)); //also wenn du c++ verwenden sollst nimmt new... ausserdem sollst du ja nicht sizeof(intput allokieren sondern strlen(input)+1 feld[0] = input; //aua ganz übel... hier musst du strcpy oder sprintf verwenden aber das gleichsetzen erfüllt nicht den von dir gewünschten zweck und du hast schöne speicherlöcher... cout << feld[0] << endl; }
-
boah nee, ich komm nich weiter,was n scheiss!
ich krieg immer das hier bei der strcpy funktion:test.cpp:14: error: invalid conversion from `char*' to `char'
#include <iostream> using namespace std; int main(void) { char *feld[13]; // feld aus 13 char zeigern char input; cout << "eingabe: "; cin >> input; input = new char[strlen(input)+1] // so hab ich mir das gedacht, aber ka ob das richtig is strcpy[feld[0],input);
sorry, ich bin noch voll anfaenger, waere trotzdem nett wenn mir nochma jemand helfen koennte..
danke
-
dein input ist ein einzelner char und kein char*. und nicht vergessen fuer input speicher zu allokieren.
was auch immer
-
hm... also. Der Compiler meckert, er kann nciht char in char* casten.
Dann schau dir doch mal die Varibale Input an, und was sie für einen Datentyp hat
-
#include <iostream> using namespace std; int main(void) { char *feld; feld = new char[13]; char *input; cout << "eingabe: "; cin >> input; input = new char[strlen(input)+1] // so hab ich mir das gedacht, aber ka ob das richtig is strcpy[feld[0],input);
das gleiche prob .. fehler kommt in der zeile strcpy! hmpf! ich hab schon so viele c++ tutorials durchforstet aber fuer dieses prob find ich einfach nuescht ..
-
Hallo,
Es macht zwar nicht viel sin aber man kann die Aufgabe auch so verstehen.
#include<string> #include<iostream> using namespace std; int main(){ string *queue[13]; sring inp; for(int i=0;i<13;i++){ cout<<"Eingabe: "; cin>>inp; queue[i]=new string(inp); } //delete folgt }
Und immer schön wieder freigeben mit delete am ende. Oder aber er sollte das Array dynamisch machen. Kann ja auch sein.
-
@icies:
schau dir mal das zeichen nach strcpy an... da sollte eignetlich eine runde klammer sein, da es ja ein funktionsaufruf sein sollte... also ein einfacher tippfehler
-
bin immer noch am rumbasteln ..
das feld für die pointer auf die strings soll ja ein char * sein ..
also ham wir erstmal:
int main(void) { char *feld; feld = new char[13];
dann soll ein string von der console eingelesen werden in ein pufferfeld
cout << "bitte string eingeben" << endl; string pufferfeld; cin >> pufferfeld;
jetzt soll die länge vom pufferfeld ermittelt werden, der entspr. speicherplatz dynamisch allokiert werden und den eintrag in die warteschlange eintragen!
int laenge; laenge = strlen(pufferfeld); feld[0] = new char[laenge]; // ich bin mir hier nich sicher, kommt auch ein fehler, wie kann ich jetzt feld[0] die länge sagen? ich muss es doch da allokieren? strcpy(feld[0], pufferfeld); // ebenfalls fehler "invalid conversion from 'char' to 'char*'
wäre nett wenn mir nochmal jemand helfen könnte, dankö!