【求助] c語言讀檔



贊助商連結


金田一
2003-08-18, 03:49 PM
#include<stdio.h>
void main(void)
{
FILE *fp1;
FILE *fp2;
fp1=fopen("hw1.txt","r");
fp2=fopen("ans1.txt","w");
char ch2[100];
double ch1;
double sum=0;
int num=0;
do
{
fscanf(fp1,"%s\n",ch2);
ch1=atof(ch2);
if(ch1>=0)
{
sum=sum+ch1;
}
else
{
ch1=0;
}
num=num+1;
}
while(ch2[0]!='E');
fprintf(fp2,"%f\n",sum);
fprintf(fp2,"%d\n",num);
fclose(fp1);
fclose(fp2);
}
==========================================
我想從hw1.txt讀入檔案如果數值是正的就相加負的就不要相加並算出共有幾個數值.執行到'E'訧停止並把結果sum與num輸入到ans1.txt.程式有錯幫看看哪裡錯如何改??
hw1.txt的內容:36.25
27.3
-35.2
0
27
-3.14
24.87
9.14
5.82
154.8
E
(-_-)

贊助商連結


VicLin
2003-08-18, 04:04 PM
本來想用TC試試
不過TC老是給我出現一些莫明奇妙的錯誤
所以就用Visual C++試
你少了一個
#include<stdlib.h>
加上去應該就沒問題了
我跑是沒出現問題
至於輸出結果正不正確我就不知道了
這是學校的作業嗎?
還是.....?

VicLin
2003-08-18, 04:07 PM
還有檔案結束可以用feof判斷
不用弄個什麼東西在檔尾

VicLin
2003-08-18, 04:16 PM
#include<stdio.h>
#include<stdlib.h>
void main(void){
FILE *fp1;
FILE *fp2;
fp1=fopen("hw1.txt","r");
fp2=fopen("ans1.txt","w");
char ch2[100];
double ch1;
double sum=0;
int num=0;
do{
fscanf(fp1,"%s\n",ch2);
ch1=atof(ch2);
if(ch1>=0){
sum=sum+ch1;
}else{
ch1=0;
}
num=num+1;
}while(!feof(fp1));
fprintf(fp2,"%f\n",sum);
fprintf(fp2,"%d\n",num);
fclose(fp1);
fclose(fp2);
}
我幫你改了一下
那個E可以砍掉了
它會自動判斷是否到檔尾了

金田一
2003-08-19, 12:39 PM
謝了