作者MoseHas (非主流摩斯) (′‧ω‧‵)
看板TFSHS68th321
標題Re: [發問] 關於C
時間Fri Apr 10 00:59:43 2009
※ 引述《crazyma (ma)》之銘言:
: 不是問腐C
: 是要認真問問題XDD
: 本人直接學C++ 沒學過C
: 雖然大家都說兩個很像但還是有點差異
: 想問一下C裡面
: print、printf、println、fprintf...等等的用法還有差異
: 在C++裡面只要cout就解決一切...所以上述東西都不太了解
: 麻煩知道的人教我一下吧
: 感恩 <(_ _)>
先說,我很弱
cin cout雖然沒有型態轉換上的問題
但是效率比較低(畢竟必須去判斷你是字元還是數字,數字是double還是int...等)
我喜歡這樣比喻
cin cout就相當於自排車,方便好開
printf scanf是手排車,你看過F1有人開自排的嗎?
為了發揮最大效益,選擇比較麻煩的型式
而這麻煩還不是普通的麻煩orz
舉例來說,如果我需要先讀一個數字代表陣列大小
再來開始吃字元
C++ style:
int index=0,i;
const int size=10;
char array[size];
cin>>index;
for(i=0;i<index;i++) cin>>array[i];
C style
int index=0,i;
const int size=10;
char array[size];
//重點來了,這邊寫法很多元
//寫法1
scanf("%d ",&index);
// ^^^請注意這個空白,用來吃\n用的,不然會被array[0]吃到
for(i=0;i<index;i++) scanf("%c",&array[i]);
//寫法2
scanf("%d",&index);
char garbage;
scanf("%c",&garbage);//吃掉輸入完index以後的換行,不然會被array[0]吃到
for(i=0;i<index;i++) scanf("%c",&array[i]);
//寫法3
scanf("%d",&index);
fflush(stdin);
for(i=0;i<index;i++) scanf("%c",&array[i]);
//注意,寫法三不能使用在ACM、測資丟console的情況
//因為fflush會清掉buffer裡面所有的字元
//詳細情形你有興趣再問我
我還記得我們助教曾經說過
「如果沒必要的話就用C++的input/output format吧,
這樣可以多活幾年壽命orz...」
不過真的搞懂了,其實真的很好用
格式活了
很多題目的需求不需要再依賴函式去完成
一個scanf/printf就全部幹掉
你有什麼問題 再問我吧
如果我有能力回答的話...
這學期修了一個德國回來的教授的課,學到了非常多東西...
算是有成長了吧...
--
◢▅▇◣▉ ◣
﹨ ∥∥ ∕
▉ ◥ ▊★
◣▂
▊ ◢◤ ◥▇▆▅▆▇◤
╲◢‥‥◥╱
◥◣
◤ ▊▊▊ ◥
▍◢◤▉▅◣◢▆◣ ▊
══'╴‥╴'══Craig
◢
◥◣ ▋▋
▇◤
▌◣ ▊ ▉ ▊ ▉ ▋
══' / '══
◣
█ ▋▍▋
▎ ◥◣
◥▌◥▆◤ ▋
══'﹏﹏﹏'══
◥
▂◤ ◤◤▌
◥ ◥
◥ ◥ ◢◣ ◢◣ ψcafelife
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.227.195.186
推 justforfree:話說現在F1都是自手排(驚) 04/10 01:01
→ MoseHas:重點還是要手排啊 有可能純手排但是不可能純自排 04/10 01:02
推 crazyma:你還是沒有告訴我print的用法,我只是想知道怎麼用c做Cout. 04/10 01:06