[問題] scanf

看板C_and_CPP作者 (longoria)時間15年前 (2010/10/11 01:32), 編輯推噓3(3010)
留言13則, 8人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 以下是目前寫的程式 #include <iostream> #include <stdlib.h> #include <stdio.h> double MyRand(double a, double b); double cost(double ice,double pearl, double sugar); struct sCustomer { double IdealIce; double IdealPearl; double IdealSugar; }; int main() { int invest; double x, RealIce, RealPearl, RealSugar; struct sCustomer first; srand(1234); printf("輸入欲投資的金額(萬元):"); scanf("%d",&invest); printf("配方(依序輸入冰、珍珠及糖):"); scanf("%f %f %f",&RealIce,&RealPearl,&RealSugar); x = cost(RealIce, RealPearl, RealSugar); printf("The cost is %f\n",x); first.IdealIce = MyRand(10.0,30.0); first.IdealPearl = MyRand(5.0,20.0); first.IdealSugar = MyRand(10.0,22.0); printf("The IdealIce is %f\n",first.IdealIce); printf("The IdealPearl is %f\n",first.IdealPearl); printf("The IdealSugar is %f\n",first.IdealSugar); system("pause"); return(0); } //回傳一個a至b的變數 double MyRand(double a, double b) { return((b-a)*rand()/(double)RAND_MAX+a); } //計算成本 double cost(double ice,double pearl, double sugar) { return(ice*0.01 + pearl*0.1 + sugar*0.5 + 0.5); } 在debug的時候出現 warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 在我的寫法中 scanf 使用上不知道有何處不完整 看起來沒有錯耶@@ 我在輸出x值時,卻出現亂碼 之後我先給RealIce, RealPearl, RealSugar的初始值而不用scanf x就對了 所以我想應該是scanf的地方有錯 可是不知道應如何修正 謝謝各位幫忙 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) visual studio 2008 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.122.112.112

10/11 01:38, , 1F
那個不用管他...
10/11 01:38, 1F

10/11 01:39, , 2F
可是在輸出x值時,卻出現亂碼耶@@
10/11 01:39, 2F

10/11 01:40, , 3F
但是記得讀double進來要用%lf, 還有珍珠你直接翻Pearl
10/11 01:40, 3F

10/11 01:40, , 4F
真有才 XD
10/11 01:40, 4F

10/11 01:41, , 5F
印也是要用%lf
10/11 01:41, 5F

10/11 02:16, , 6F
標準C很多都不安全呢,為什麼一開始不弄安全一點呢
10/11 02:16, 6F

10/11 02:37, , 7F
說話.我到現在還是不懂為什麼不安全,只知道現在似乎
10/11 02:37, 7F

10/11 02:37, , 8F
還能用,沒出過包 XD
10/11 02:37, 8F

10/11 02:43, , 9F
標準庫做的越多就越肥大 以C現在的市場不太需要吧?
10/11 02:43, 9F

10/11 05:07, , 10F
C lib 歷史悠久,要一開始就很安全才奇怪吧 XD
10/11 05:07, 10F

10/11 05:13, , 11F
不安全的地方大都是 buffer overflow 攻擊法,多用 n 系列
10/11 05:13, 11F

10/11 05:13, , 12F
的函式就沒什麼問題了,頂多就是變成 bug。
10/11 05:13, 12F

10/11 08:41, , 13F
freopen也會 為甚麼? 不過用C::B就不會warning 0.0
10/11 08:41, 13F
文章代碼(AID): #1CiVYiDv (C_and_CPP)