Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)


スレッド

└◇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 <


2735● プログラムのエラーについて[ さくら ] 2005 02/01 23:22
プログラミング初心者です。少数を含むランダムな数列10000個が書いてあるファイルを読み出し、200個ずつの平均値を出して、新しいファイルに保存するプログラムを書きたいのですが、syntax error at '@' tokenとか stray '\201' in programとか、見たことがないエラーがでて、参考書にも書いてないので、困っています。
ヒントか何かを戴けたら嬉しいです。
お願いします。
スレッド一覧


2736● Re:プログラムのエラーについて[ MSだす。 ] 2005 02/02 00:24
恐らくソースに日本語を入れた箇所があるのでしょう。
全角スペース、コメント行を含め、日本語部分を削除して
みたら良いでしょう。
スレッド一覧


2738● Re[2]:プログラムのエラーについて[ MSだす。 ] 2005 02/02 00:51
言い忘れていました。cygwin環境は必ずしも日本語に対応していません。それで日本語が問題の種になることがあります。

また、実際にgccで試したところ、問題のエラーメッセージは
プログラム中の全角スペースから出ているようです。
コメント行内の日本語は、あまり問題ないかもしれません。
とりあえず、全角スペースを取り除いてください。
スレッド一覧


2739● Re[3]:プログラムのエラーについて[ さくら ] 2005 02/02 09:29
ヒントありがとうございます。でも、プログラム内には全角は入っていないので、未だちょっと困っています。
・・・;_;。
実は今書いているのは、こういうプログラムで、文法(構文)に自信がないのです。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;

}
スレッド一覧


2740● Re[4]:プログラムのエラーについて[   ] 2005 02/02 12:39
/* 動作保証不可 */
#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);
}
スレッド一覧


2743● ありがとうございました[ さくら ] 2005 02/02 16:58
ありがとうございます。
参考にさせていただきます。
プログラミングは奥が深いものですね。いつかこの位書けるようになれればと思っています。
皆様、ありがとうございました。
スレッド一覧


2741● Re[4]:プログラムのエラーについて[ MSだす。 ] 2005 02/02 16:23
すでに" "さんが(ハンドルが全角スペースかよっ!…失礼)
が代替プログラムを書いてくださっていますが、一応私もレスします。

まず、投稿されたプログラムがさくらさんの
お作りになったものをコピーペーストしたものならば、

a[NUM] = ch[NUM];    

の行末に全角スペースが4つ入っています。
a[NUM] = ch[NUM];□□□□
という風に。
おそらくこれが
エラーの発生源でしょう。まずこれを削除してください。
(全角スペースを削除したらコンパイルは通るかもしれません。
しかし、期待した動作はしないでしょう。もうすこし単純なプログラムから学ばれた方が良い気がします。)
スレッド一覧


2744● ありがとうございました[ さくら ] 2005 02/02 17:05
ありがとうございました。
単純なプログラムから始めます。
スレッド一覧

早田のホームページへ
CGIROOM