[問題] 陣列內元素變為最後輸入的字串

作者: wm0116 (傑尼)   2020-10-23 00:57:02
開發平台(Platform): (Ex: Win10, Linux, ...)
win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
devc++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)

問題(Question):
陣列內元素變為最後輸入的字串
餵入的資料(Input):
浮點數,用陣列儲存
預期的正確結果(Expected Output):
判定是否為浮點數
錯誤結果(Wrong Output):
陣列內元素都是一樣的
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
https://glot.io/snippets/fscp7lm85d
補充說明(Supplement):
https://imgur.com/eJTs2z6
我自己用devc++執行的成果
作者: ucrxzero (RX-0)   2020-10-23 01:02:00
scanf("%s",number);改成scanf("%s",&number);要改值一定要傳位址R忽略上面我知道你問題在哪了number被改爛了一樣是number的問題,你number一變前面都會跟著變number是位址~~~你只是一值改number指向的值而已~
作者: wm0116 (傑尼)   2020-10-23 01:09:00
那我這邊怎麼改才會變成我想要的結果呢
作者: ucrxzero (RX-0)   2020-10-23 01:15:00
不能動架構嗎?還有我有一個問題 你要輸入浮點數float不是才佔4byte為什麼要用50byte?
作者: wm0116 (傑尼)   2020-10-23 01:19:00
我只是多給他大小而已,我不清楚我要如何修改他才會變成我想要的結果,我能想到的只有這樣而已QQ
作者: ucrxzero (RX-0)   2020-10-23 01:21:00
幫你改好了改成宣告 char number[50][50];改 scanf("%s",number[i]);改 a[i]=number[i];萬事如意
作者: wm0116 (傑尼)   2020-10-23 01:23:00
換句話說,我只能用二維陣列存放資料,再去做判定跟修改
作者: ucrxzero (RX-0)   2020-10-23 01:24:00
因為你原本寫的是改number指向的值,然後把number的位址放進a[i]我舉個例: 你原本像是一個迴圈指令 var=num但你每次指定給a[i]的都是&var那等於沒改只是剛好C字串的位址就是他的字串,你誤以為傳到值
作者: wm0116 (傑尼)   2020-10-23 01:27:00
我明白了,也就是不同的值要指向不同的位子我的寫法是讓他通通指向同一個位子,所以才有問題
作者: ucrxzero (RX-0)   2020-10-23 01:27:00
作者: wm0116 (傑尼)   2020-10-23 01:28:00
感謝大大
作者: ucrxzero (RX-0)   2020-10-23 01:28:00
迴圈指定字串不可能在同一個字串內搞因為字串本身就是位址
作者: wm0116 (傑尼)   2020-10-23 01:29:00
因為陣列是常數指標,所以我不能在迴圈這樣搞
作者: ucrxzero (RX-0)   2020-10-23 01:29:00
除非拆解原number[0]+number[1]這種方法,但要重構算了上面那句話當我沒說式的
作者: wm0116 (傑尼)   2020-10-23 01:31:00
因為小弟我沒學到那麼深奧,所以只能用最原始的方法處理
作者: ucrxzero (RX-0)   2020-10-23 01:33:00
我把我01:29的話重新講一次好惹你要用指向的寫法寫 要類似這樣int main(void){char a[10];a[0]='a'; a[1]='b', a[2]='c' ;}這種就是指向的方法
作者: wm0116 (傑尼)   2020-10-23 01:36:00
拆成一個個字元去做存入的動作吧?這樣才能指向?
作者: ucrxzero (RX-0)   2020-10-23 01:37:00
你就會得到a="abc" 再用atof轉就可以,照你原本邏輯是這對啊%s跟%c的作法不一樣RRRR但就要重構你的程式碼了我也沒寫過但一定可行你的問題這樣有解決了嗎
作者: wm0116 (傑尼)   2020-10-23 01:39:00
有,我明白該如何處理了,謝謝大大解惑
作者: ucrxzero (RX-0)   2020-10-23 01:44:00
建議*a[50] 也改成a[50][50]沒是忽略上面的那段話我以為會存取錯誤應該不會
作者: wm0116 (傑尼)   2020-10-23 01:46:00
好的,我明白啦,感謝

Links booklink

Contact Us: admin [ a t ] ucptt.com