▼スレッド
│
└◇2735:プログラムのエラーについて [さくら] 02/01 23:22
└◇2736:Re:プログラムのエラーについて [MSだす。] 02/02
└◇2738:Re[2]:プログラムのエラーについて [MSだす。] 02/02
└◇2739:Re[3]:プログラムのエラーについて [さくら] 02/02
├◇2740:Re[4]:プログラムのエラーについて [ ] 02/02
│└◇2743:ありがとうございました [さくら] 02/02
└◇2741:Re[4]:プログラムのエラーについて [MSだす。] 02/02
└◇2744:ありがとうございました [さくら] 02/02 <
プログラミング初心者です。少数を含むランダムな数列10000個が書いてあるファイルを読み出し、200個ずつの平均値を出して、新しいファイルに保存するプログラムを書きたいのですが、syntax error at '@' tokenとか stray '\201' in programとか、見たことがないエラーがでて、参考書にも書いてないので、困っています。スレッド一覧
ヒントか何かを戴けたら嬉しいです。
お願いします。
恐らくソースに日本語を入れた箇所があるのでしょう。スレッド一覧
全角スペース、コメント行を含め、日本語部分を削除して
みたら良いでしょう。
言い忘れていました。cygwin環境は必ずしも日本語に対応していません。それで日本語が問題の種になることがあります。スレッド一覧
また、実際にgccで試したところ、問題のエラーメッセージは
プログラム中の全角スペースから出ているようです。
コメント行内の日本語は、あまり問題ないかもしれません。
とりあえず、全角スペースを取り除いてください。
ヒントありがとうございます。でも、プログラム内には全角は入っていないので、未だちょっと困っています。スレッド一覧
・・・;_;。
実は今書いているのは、こういうプログラムで、文法(構文)に自信がないのです。T_T。
#include <stdio.h>
#define NUM 10000
int main (void)
FILE *fp;
char ch[NUM];
int i,j,sum;
int a[NUM];
fp = fopen("list.txt","r");
fp = fopen("newlist.txt","w");
if (fp==NULL){
printf("I could not open a file.\n");
return 1;
} else {
printf("I could open a file.\n");
}
a[NUM] = ch[NUM];
printf("%d\n",a[NUM]);
for(i=1; i<=NUM; i++){
sum += i;
}
printf("%f\n",(double)sum/200);
fclose(fp);
printf("I could close a file.\n");
return 0;
}
/* 動作保証不可 */スレッド一覧
#include <stdio.h>
#include <stdlib.h>
#define NUM 10000
#define MAX_LEN 15
int main(int argc, char **argv){
FILE *fp;
FILE *fp_b;
double sum = 0.0;
char string[MAX_LEN];
int count = 1;
fp = fopen("list.txt","r");
if (fp==NULL){
printf("I could not open a file(list.txt).\n");
return 1;
} else {
printf("I could open a file.(list.txt)\n");
}
fp_b = fopen("newlist.txt","w");
if (fp_b==NULL){
printf("I could not open a file(newlist.txt).\n");
return 1;
} else {
printf("I could open a file(newlist.txt).\n");
}
while ((fgets(string,sizeof(string)-1,fp)) != NULL){
sum += strtod(string,NULL);
if(count==200){
fprintf(fp_b,"%f\n",sum/200.0);
printf("%f\n",sum/200.0);
sum = 0.0;
count = 1;
}
count++;
}
fprintf(fp_b,"%f(%d)\n",(double)sum/count,count);
printf("%f(%d)\n",(double)sum/count,count);
fputs("\0",fp_b);
fclose(fp);
printf("I could close a file(list.txt).\n");
fclose(fp_b);
printf("I could close a file(newlist.txt).\n");
return(0);
}
ありがとうございます。スレッド一覧
参考にさせていただきます。
プログラミングは奥が深いものですね。いつかこの位書けるようになれればと思っています。
皆様、ありがとうございました。
すでに" "さんが(ハンドルが全角スペースかよっ!…失礼)スレッド一覧
が代替プログラムを書いてくださっていますが、一応私もレスします。
まず、投稿されたプログラムがさくらさんの
お作りになったものをコピーペーストしたものならば、
a[NUM] = ch[NUM];
の行末に全角スペースが4つ入っています。
a[NUM] = ch[NUM];□□□□
という風に。
おそらくこれが
エラーの発生源でしょう。まずこれを削除してください。
(全角スペースを削除したらコンパイルは通るかもしれません。
しかし、期待した動作はしないでしょう。もうすこし単純なプログラムから学ばれた方が良い気がします。)
ありがとうございました。スレッド一覧
単純なプログラムから始めます。