→ johnhmj:註解變亂碼?!該不會是全形半形的關係吧! =_=||| 01/13 22:36
※ 引述《pharaoh7 (狂風.怒浪)》之銘言:
: 遇到的問題: (題意請描述清楚)
: 我想問的是 我用一個指標陣列,每一個指標陣列
: 指向函式(函式的功用是從keyborad中讀取一個字串
: 這程式的目的是 可以輸入一連串的字串,但不像二維陣列那樣 固定大小
: 用這樣是希望 依字串的大小來配空間
: 有問題的code: (請善用置底文標色功能)
: #include <cstdlib>
: #include <iostream>
: #include<string>
: using namespace std;
: char* getname(void);
: int main(int argc, char *argv[])
: {
: char* name[5];
: for(int i=0;i<5;i++){
: name[i]=getname(); //好像是卡在這兒有問題......請問是怎麼錯的@@
: for(int i=0;i<5;i++)
: cout<<name<<" at "<<(int*)name<<endl;
: //delete [] name;
: system("PAUSE");
: return EXIT_SUCCESS;
: }
: char* getname()
: {
: char temp[80];
: cout<<"plz input name:";
: cin>>temp;
: char* pn=new char [strlen(temp)+1];
: strcpy(pn,temp);
: return pn;
: }
: */
: 補充說明:
: 我比較想問的是觀念,覺的這樣應該是可行的
: 但是查網路一下,好像說這是不好的做法?
: 請問一下 我哪兒 觀念錯了
: 而且如果程式要照我上面需求 來寫
: 要怎麼改 程式才會執行....
: 想不太出來...
: 謝謝各位前輩指教一下
#include <iostream>
#include <cstdlib>
#include <cstring>
// Integrated Development Environment
// Visual C++
using namespace std;
//
char* getname(void);
void main(int argc, char** argv)
{
char* name[5] = {NULL};
for(int i = 0; i < 5 ; i++){
name[i] = getname();
// 顯示字串
cout<<(&name[i])<<" at "<<name[i]<<endl;
}
// 下面要逐一刪除動態配置的空間
for (int i = 0; i < 5; i ++)
{
if ( name[i] !=NULL )
{
delete name[i];
}
}
// 因為 *name[5] 本身是靜態的,可以不用管它
system("PAUSE");
}
char* getname()
{
char temp[80];
cout<<"plz input name:";
cin>>temp;
char* pn = new char [strlen(temp)+1];
strcpy( pn, temp);
return pn;
}
--
~耗呆小綿羊~
~~~個人網頁:http://tw.myblog.yahoo.com/mjshya/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.5.245