ショッピングモール  CD/DVD搭載コンポ  CD+HDDコンポ  クラシック調オーディオ  CD/MDシステム


【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.3277

データ入力プログラムについて
投稿者---練習生(2005/01/11 21:37:09)


こんばんは。プログラムに慣れてきてやっとこそファイル入出力のプログラム勉強に入りました。
「新訂新C言語入門」でのファイル入出力では、テキスト通りできますが、データを作って入力するのを2つ(複数)を作る場合が載ってなく、自分で作ってみました。これができたら、読み込みのプログラムを作ろうと思っています。よろしくお願いします。

そこでこのプログラムで問題は、関数と関連できなく、エラーが出てしまうことなのです。
#include <stdio.h>
sample(char fname[], int N);
int main(void){
 int N;
 char fname1[20]="1.dat";
 char fname2[20]="2.dat";

  printf("students?>>");
  scanf("%d",&N);

  printf("1\n");
  sample(fname1,N);
  printf("2\n");
  sample(fname2,N);

return 0;
}

void sample(char fname[], int N){
int i, data;
FILE *fp

 fp=fopen(fname,"w");
 for(i=0; i<N; i++){
   printf(">>");
   scanf("%d",&data);
   fprintf(fp,"%d\n",data);
 }
fclose(fp);
return 0;
}


printf("students?>>");
scanf("%d",&N);の所は、自分で決めた数を入力するときに固定するため。余計なものかもしれませんが。。

指摘、指導お願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:データ入力プログラムについて 3278 nop 2005/01/11 21:58:42


No.3278

Re:データ入力プログラムについて
投稿者---nop(2005/01/11 21:58:42)


>そこでこのプログラムで問題は、関数と関連できなく、

まず、日本語として理解出来ない。
日本語くらいは正しく書いて頂かないと、
誰も回答する事が出来ません。

「関数と関連できない」と言いますが、
関数と何が関連出来ないのですか?


>エラーが出てしまう

どの様なエラーですか?
エラーメッセージが出るのでしたら、
表示されたエラーメッセージを示して下さい。

動作が希望のものと異なる場合には、

1.希望する動作
2.現状の動作

を、詳しく書いて下さい。



この投稿にコメントする

削除パスワード

No.3279

Re:データ入力プログラムについて
投稿者---練習生(2005/01/11 23:14:50)


すみません。指摘ありがとうございます。

日本語正しく直してみました。

私の希望動作は、
1.2つのデータファイルに人数の上限を制限させる。(2つとも同じ上限になる。)
2.数字を入力するプログラムである。
3.各データの数字を入力したファイルを作成する。
 
 1.dat
ーーーー
|10
|30
|65
|10
|・
|・

カウント順に数字が書かれたファイル

現状の動作では、コンパイル&リンクしないため動作が見れません。エラーが出ているため。
そのエラーは、19行目、関数化したプログラムの中からエラーがでてきている。
23行目に4つのエラーがでてき、「fp」の宣言が悪いのか、「;」は、いらないのか、、、よくわかりませんです。
<Unknow>ばかり出ているので。
30行目のreturn 0;を消したら、30行目のエラーが消えましたが、正しいのでしょうか?
テキストからみると、エラー処理のプログラムを入れるべきかもしれませんね。今からやってみます。


この投稿にコメントする

削除パスワード

No.3280

Re:データ入力プログラムについて
投稿者---練習生(2005/01/11 23:21:09)


>テキストからみると、エラー処理のプログラムを入れるべきかもしれませんね。今からやってみます。

やってみましたら、エラーが減りましたが、19行目が、なかなか消せませんでした。また23行目に1つだけ新しいエラーが出てきました。if文に問題がある模様。うーん、わかりません・・


エラー処理プログラムを付け加えてみました。
#include <stdio.h>
sample(char fname[], int N);
int main(void){
 int N;
 char fname1[20]="1.dat";
 char fname2[20]="2.dat";

  printf("students?>>");
  scanf("%d",&N);

  printf("1\n");
  sample(fname1,N);
  printf("2\n");
  sample(fname2,N);

return 0;
}

void sample(char fname[], int N){
int i, data;
FILE *fp

 if((fp=fopen(fname,"w"))== NULL){
    printf("ファイルオープンエラー\n");
    exit(1);
 }
   for(i=0; i<N; i++){
   printf(">>");
   scanf("%d",&data);
   fprintf(fp,"%d\n",data);
 }
fclose(fp);
}




この投稿にコメントする

削除パスワード

No.3281

Re:データ入力プログラムについて
投稿者---nop(2005/01/11 23:33:46)


とりあえず、簡単な間違いを指摘。


>sample(char fname[], int N);
>void sample(char fname[], int N)

定義と宣言が一致していない。


> exit(1);

exit 関数は stdlib.h が必要。


>FILE *fp

文の終わりを示す「;」がない。


「;」が必要か不必要かもわからない状態であるなら、
もう一度、教科書を最初から読み直した方がいいよ。



この投稿にコメントする

削除パスワード

No.3282

Re:データ入力プログラムについて
投稿者---nop(2005/01/11 23:36:02)


書き忘れ。
エラーメッセージは、コンパイラが出力したものを、
そのままコピー&ペーストすべし!


この投稿にコメントする

削除パスワード

No.3283

Re:データ入力プログラムについて
投稿者---練習生(2005/01/12 00:07:25)


>エラーメッセージは、コンパイラが出力したものを、
>そのままコピー&ペーストすべし!

私は、Visual C++ Toolkit 2003 Command Prompt を使っていて、コピーができません。。ので移しました。

指摘を頂いてもらって、自分で確認しなおしたら、正常に動作できました。
痛いほど、自分にとって見直すと簡単なミスだということがわかりました。。

エラーでは、
ファイル名(19):error c2371: 'sample' : redefinition; different basic types
ファイル名(3):see declaration of 'sample'
これは、定義と宣言が一致していないということでしたね。

ファイル名(23):error c2143: syntax error : missing ';' before 'if'
これは、最初if文に問題があるのかなって悩んでいましたが、その前の行 FILE *fp の';'がない。
という指摘でしたんですね。

英語も勉強がんばらねばと思いました。
ありがとうございます。


この投稿にコメントする

削除パスワード

No.3284

Re:データ入力プログラムについて
投稿者---RAPT(2005/01/12 02:10:48)


>私は、Visual C++ Toolkit 2003 Command Prompt を使っていて、
>コピーができません。。ので移しました。

Toolkitは知らないが、コマンドプロンプト?
であれば、マウスで範囲選択をして、選択された範囲を右クリックすると
クリップボードにコピーされます。
# ちなみに、貼り付けは、コマンドプロンプト上で右クリック。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity