我對某事感到非常困惑。我有一個循環從一個子進程讀取值並將它們插入一個char數組(稱爲sleepTime)。我得到了正確的值(我將它們放入我的char數組後立即在控制檯中顯示),但是當循環讀取下一個值時,數組中的所有內容都會更新爲從管道讀回的當前值。退出循環後,我再次打印結果,數組的每個元素都是最後一次讀取的值。任何人都可以闡明這一點嗎?我很難過。C++數組正在用循環中的當前值覆蓋每個元素
char* sleepTime[4];
char randNumSend[15];
char randNumRet[15];
for (int i=0; i<nWorkers; i++){ // loop to read back values from child process
read(pipe2[0],randNumRet,strlen(randNumSend)); // read back data
sleepTime[i]=randNumRet; // save values as string for execlp command
cout << "sleepTime" << i+1 << ": " << sleepTime[i]<< endl;
}
close(pipe2[0]); // close read end of pipe2
for (int i =0; i<nWorkers; i++){
cout << "sleepTime" << i+1 << ": " << sleepTime[i]<< endl;
}
'sleepTime'是如何聲明的? – 2013-03-13 19:23:11
我在我的代碼的頂部添加了sleepTime,randNumSend和randNumRet的變量聲明。 – Erk 2013-03-13 19:36:43
我們可以看到你宣佈的地方** randNumRet **,** randNumSend **和** sleepTime **? – RouteMapper 2013-03-13 19:23:49