我正在練習C字符串/指針,並不能解決這個簡單的問題。 cin.getline()
不會在第一次迭代時提示用戶輸入,但對於連續的字符串會這樣做。 (我任意選擇10作爲字符限制)。cin.getline()跳過第一次迭代
我可以忽略一些非常簡單的事情嗎?
void getStrings() {
int num;
cout << "How many strings? ";
cin >> num;
const int numStrings = num;
char** stringSet = (char**) malloc(numStrings * sizeof(char*));
for (int i = 0; i < numStrings; i++) {
*(stringSet + i) = (char*) malloc(10);
cout << "String " << i << ": ";
cin.getline(stringSet[i], 10);
cout << endl;
}
不要在C++ land中使用'malloc',不要忘記釋放它。使用'new' /'delete'。等等......爲什麼你需要裸指針呢? – deepmax
如果你要去malloc,malloc足夠的空間。當你告訴getline接受包括NUL在內的11個字節時,你需要留出11個字節的空間,因爲getline將包含NUL。 – rici
@MM。他的問題提到'c',他使用'malloc',所以'C'標籤是相關的,應該重新添加。 – jmstoker