我有這樣的事情:如何將字符數組複製到結構的成員?
struct cd { char name; cd *next;}
// some code...
int main(){
char title[100];
// some code...
cd *p =new cd;
p->name=title;
如何複製數組title
到p->name
?
我有這樣的事情:如何將字符數組複製到結構的成員?
struct cd { char name; cd *next;}
// some code...
int main(){
char title[100];
// some code...
cd *p =new cd;
p->name=title;
如何複製數組title
到p->name
?
在你的結構你需要一個字符指針,而不是單個字符:
struct cd {
char * name;
cd *next;
}
這樣,您的最終代碼將變爲:
int main(int argc, char * argv[]) {
char title[256];
// code
struct cd * p = new cd;
p->name = new char[256];
strcpy(p->name, title);
}
注意,這是純粹的Ç(除從新的,可以被malloc()取代而不是C++)。
在複製之前分配空間是個好主意 –
這也是因爲'strcpy'會試圖寫入未分配的內存; 'p-> name'未初始化。你可以通過使用'strdup'來修復(並簡化)。 –
你確定嗎?純「C」中的「新」? strcpy到未分配的內存? – Andrei
如果使用std::string
,這得到簡單:
struct cd { std::string name; cd *next; };
int main() {
// blah
p->name = title;
}
但是你可以做得比這更好。在C++中,你可以用一個構造函數初始化對象:
struct cd {
cd(std::string newname) : name(newname), next() {}
std::string name;
cd *next;
};
int main() {
// blah
cd p(title); // initializes a new cd with title as the name
}
如果構造是不可取的,你可以使用集合初始化:
struct cd {
std::string name;
cd *next;
};
int main() {
// blah
cd p = { title, NULL }; // initializes a new cd with title as the name
// and next as a null pointer
}
'+ 1'從我這裏回答它作爲它被標記爲C++的問題。但是,實際上,這個呼聲要求一個答案來解釋什麼是... – sbi
比我的好得多:P +1 –
另外,保持結構簡單的聚合並初始化它:'cd p = {「hello」, ...};'。有時它不需要任何自定義構造函數。 –
只是爲了澄清這個......你要存儲一個字符串一個鏈接的字符列表? –
除非你輸錯,'P-> name'是一個char,'title'字符數組,所以它不可能 – Saphrosit
居然還有經鏈接列表與玉米粥更多的結構成員 \t'焦炭行爲;' \t'焦維和行動; ' \t'char name;' \t'cd * next;'和main()函數讀取數組中的文本中的文本,我需要將其複製到結構成員中。也許我錯了'char name;'如果可能的話應該改爲'char name [100]'? – Matiss