我寫了一個代碼,它從一個.dat文件讀取一個方形矩陣,並從一個單獨的.dat文件中讀取一個向量,然後對這兩個矩陣進行增強,然後進行高斯約旦消除以將增廣矩陣變爲行減少梯隊形式。我現在正在努力使用戶友好並在用戶輸入無意義時優雅地崩潰。例如,我有一個檢查,以確保矩陣是正方形的,並且矢量的長度與矩陣的維度相匹配。我現在要做的是檢查數據文件中是否有任何字符或符號不是數字。擺脫數據文件中的字符串
我的嘗試:類似scanf("%lf", )
的工作原理是當它遇到這些符號之一時停止工作。問題是我的輸入不是來自命令行。 (命令行在這裏並不是真正的選擇,因爲我希望代碼能夠接受一個巨大的矩陣,用戶不想坐在那裏並在命令行中輸入)。在遇到字符串時,fscanf("%f", )
會變得很糟糕。 有沒有像scanf這樣的東西會停下來,但遇到一封信等時不會發瘋? 如果沒有,是否還有其他建議?
讀到的一切作爲字符串,測試有效性和轉換...... –
不要使其崩潰了!任何理智的程序都會執行錯誤檢查,如果無法正確運行,就會退出並顯示錯誤。至於你的問題,分離解析,驗證和處理可能是最乾淨的,所以如果存在解析或驗證錯誤,你可以退出。 –
對於「* ...崩潰優雅... *」+1 :-)無論如何要認真,我完全同意Kerrek SB上面寫的東西!另外我想提一提'scanf()'在'*發瘋了*之後'返回'EOF',所以你可以在運行時很容易地捕捉到這個條件。 – alk