→ CCWck:while那一行的括號內 邏輯判斷有問題 08/17 14:15
→ CCWck:(ch==getc(f)) &&(getc(f)!=EOF) 試試看 08/17 14:15
→ Dannvix:while ((ch = getc(f)) != EOF) 08/17 14:17
→ Dannvix:原本的寫法會解譯成(ch = (getc(f) != EOF))出來都 0x01 08/17 14:18
→ Dannvix:二樓的寫法讀出來會少字 08/17 14:19
→ shesee:對,上面會少字,不過可以成功的讓笑臉變回英文字元 hlokt 08/17 14:20
→ shesee:可能是因為ch變數沒有初始值,不能邏輯判斷 == getc(f) 08/17 14:21
→ shesee:D大的結果則是與我一開始的code一樣 08/17 14:22
→ Dannvix:你說三樓的code跟你一開始的結果一樣? @_@ 08/17 14:23
→ shesee:對啊,還是11個笑臉 笑得我心底發寒 orz 08/17 14:23
→ Dannvix:可以貼一下你改完之後的code嗎 0.0 08/17 14:27
就是直接改成您的建議,只有加一對括號,應該不需要貼code。
= 是雙元運算子,就是左右都要有運算元,功能是把 右邊的運算元 存進 左邊,
我自己的猜想,應該加不加括號都對這個錯誤沒有什麼差別...
不過我是新手剛學,真的是不了解,如果上述猜想有錯也請各位大德指正觀念,
感謝!
※ 編輯: shesee 來自: 140.116.75.177 (08/17 14:34)
→ loveme00835:3樓是對的阿, 怎麼會跑不出來 = = 08/17 14:41
→ loveme00835:你沒把改過的貼上來, 別人也不知道你有沒有改錯 08/17 14:42
→ Dannvix:加不加括號當然有差,差在「右邊的operand」是取什麼東西 08/17 14:47
→ Dannvix:BTW, 如果你照三樓的方式改還不能跑的話,我也束手無策 :( 08/17 14:47
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *f;
int count = 0;
char ch;
f = fopen("c:\\prog\\welcome.txt","r");
if(f != NULL)
{
while((ch=getc(f))!=EOF)
{
printf("%c",ch);
count++;
}
printf("\n總共有%d個字元\n",count);
fclose(f);
}
else
printf("檔案開啟失敗!");
system("pause");
return 0;
}
※ 編輯: shesee 來自: 140.116.75.177 (08/17 14:56)
※ 編輯: shesee 來自: 140.116.75.177 (08/17 14:58)
→ Dannvix:@_____@ 只好徵求其它強者來把脈了 08/17 15:08
→ shesee:感謝樓上熱情解答XD 08/17 15:10
→ loveme00835:while( fscanf( f, "%c",&ch) != EOF ) 呢? 08/17 15:17
→ bleed1979:用fgetc會如何? 08/17 17:58
推 VictorTom:同樣的code與測資, 我拿VC2005跑了是OK的說@_@" 08/17 23:09
→ VictorTom:說的是後面修改過的新版:) 08/17 23:09
→ shesee:OK了,換一個VC就OK...XD 08/18 11:42