
我在MFC程式中通過點擊按鈕打開了一個控制臺視窗,執行一些輸入輸出的功能,圖片是運行結束的狀態。之后我關閉視窗每次再進的時候都一直是那樣,表明每次我點開視窗都無須我自己的輸入程式自己就能運行至此,一直想不明白。
void CC350UdpTestDlg::OnBnClickedButton2()
{
// TODO: 在此添加控制元件通知處理程式代碼
LoadDouble load;
load.length = 0;
char sendBuffer[1000];
memset(&load.container, 0, 100);
AllocConsole();
SetConsoleTitle(_T("Input Double Data"));
freopen("CONOUT$", "w", stdout);
freopen("CONIN$", "r", stdin);
cout << "Input:" << endl;
int i = 0;
while (cin >> load.container[i])
{
load.length++;
cout << load.container[i] << " ";
i++;
if (i > 100)
break;
}
memset(sendBuffer, 0, 1000);
memcpy(sendBuffer, &load, sizeof(load));
sendBuffer[sizeof(load)] = 0x00;
LoadDouble loadtest;
memset(&load.container, 0, 100);
memcpy(&loadtest, sendBuffer, sizeof(loadtest));
cout << "loadtest.length:" << loadtest.length << endl;
sendto(sockClient, sendBuffer, sizeof(sendBuffer), 0, (SOCKADDR*)&local, len);
cout << "Successfully Send!" << endl;
system("pause");
fclose(stdout);
fclose(stdin);
int ret = FreeConsole();
if (ret == 0)
{
MessageBox(_T("Failed Free!"));
}
MessageBox(_T("Successfully Send!"));
}
uj5u.com熱心網友回復:
找到答案了,在程式中我需要給 load.container[i]輸入double型別的資料,我一般是以非法字符來結束輸入的,這就破壞了cin的狀態,下一次在進入視窗的時候,cin>> 的回傳值即為false就不會進行輸入了uj5u.com熱心網友回復:
解決了問題就好。
uj5u.com熱心網友回復:
乍看起來c++的cin、cout、ifstream、ofstream、istringstream、ostringstream在輸入、輸出上比c的scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf簡單,不用格式控制符!但是不用格式控制符,輸入輸出恰好是你期望的格式的時候好說;等到輸入輸出不是你期望的格式的時候,你就會覺得還是用格式控制符更方便、更靠譜。
摒棄cin、cout、ifstream、ofstream、istringstream、ostringstream!
使用scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/86887.html
標籤:界面
上一篇:VC列印西語資訊亂碼
下一篇:編解碼速度
