Visial C++ 2008を使用したプログラミングについてです。
学校の課題をやるためやむなくVisial C++2008を使用していて
学校では実行が出来たのに家では出来ませんでした。
ソースファイルは以下のとおりです。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*構造体宣言*/
struct Students{
int N;
int A;
int B;
int C;
};
int main(void){
struct Students std[50]; /*構造体型配列*/
int i,N,A,B,C,num,scannum;
srand((unsigned)time(NULL)); /*乱数の初期化*/
FILE *file; /*ファイルのポインタを用意*/
file=fopen("Data.txt","r"); /*Dataファイルの読み込み*/
/*ファイルのオープンチェック*/
if(file==NULL){
fprintf(stderr,"cannnot open file 'Data.txt'\n");
exit(1);
}
/*Studentsにデータを格納*/
for(i=0;i<=49;i++){
fscanf(file,"%d%d%d",&N,&A,&B);
std[i].N=N;
std[i].A=A;
std[i].B=B;
std[i].C=70+(rand()/(RAND_MAX+1.0)*31);
/*表示*/
printf("学籍番号:%d.",std[i].N);
printf("科目A:%d.\n",std[i].A);
printf("科目B:%d.\n",std[i].B);
printf("科目C:%d.\n",std[i].C);
}
fclose(file);
return 0;
}
エラーとしては
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(21) : error C2275: 'FILE' : この型は演算子として使用できません
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(69) : 'FILE' の宣言を確認してください。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(21) : error C2065: 'file' : 定義されていない識別子です。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(23) : error C2065: 'file' : 定義されていない識別子です。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(23) : warning C4047: '=' : 間接参照のレベルが 'int' と 'FILE *' で異なっています。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(26) : error C2065: 'file' : 定義されていない識別子です。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(26) : warning C4047: '==' : 間接参照のレベルが 'int' と 'void *' で異なっています。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(32) : error C2065: 'file' : 定義されていない識別子です。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(32) : warning C4047: '関数' : 間接参照のレベルが 'FILE *' と 'int' で異なっています。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(32) : warning C4024: 'fscanf' : の型が 1 の仮引数および実引数と異なります。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(36) : warning C4244: '=' : 'double' から 'int' への変換です。データが失われる可能性があります。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(45) : error C2065: 'file' : 定義されていない識別子です。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(45) : warning C4047: '関数' : 間接参照のレベルが 'FILE *' と 'int' で異なっています。
1>c:\documents and settings\devil\my documents\visual studio 2008\projects\テスト\テスト\tt.c(45) : warning C4024: 'fclose' : の型が 1 の仮引数および実引数と異なります。
1>ビルドログは "file://c:\Documents and Settings\devil\My Documents\Visual Studio 2008\Projects\テスト\テスト\Debug\BuildLog.htm" に保存されました。
と表示されます。FILEの宣言をしているのになんで確認してください
と出るのでしょうか。。。。解決にご協力お願いします。m(__)m
No.1ベストアンサー
- 回答日時:
こんばんは。
VC++6.0の*.Cファイルにて確認してみました。
一応コンパイルは通りました。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*構造体宣言*/
struct Students{
int N;
int A;
int B;
int C;
};
int main(void){
/*stdという名前が衝突しているので名前変更*/
struct Students arr[50]; /*構造体型配列*/
int i,N,A,B,C,num,scannum;
/*fileの宣言が処理の下にかかれていたので上に持ってきた*/
FILE *file; /*ファイルのポインタを用意*/
srand((unsigned)time(NULL)); /*乱数の初期化*/
file=fopen("Data.txt","r"); /*Dataファイルの読み込み*/
/*ファイルのオープンチェック*/
if(file==NULL){
fprintf(stderr,"cannnot open file 'Data.txt'\n");
exit(1);
}
/*Studentsにデータを格納*/
for(i=0;i<=49;i++){
fscanf(file,"%d%d%d",&N,&A,&B);
arr[i].N=N;
arr[i].A=A;
arr[i].B=B;
arr[i].C=70+(rand()/(RAND_MAX+1.0)*31);
/*表示*/
printf("学籍番号:%d.",arr[i].N);
printf("科目A:%d.\n",arr[i].A);
printf("科目B:%d.\n",arr[i].B);
printf("科目C:%d.\n",arr[i].C);
}
fclose(file);
return 0;
}
詳細をありがとうございます。php504さんのアドバイスのとおり
宣言と乱数の初期化が反対になっていたのが原因だったんですね。。
学校のPCではうまく実行できたのにVisial C++で出来なかったので
別の問題かと思ってしまいました。親切にありがとうございました。
m(__)m
No.2
- 回答日時:
Cでは変数の宣言を最初にしないといけません
srand((unsigned)time(NULL)); /*乱数の初期化*/
FILE *file; /*ファイルのポインタを用意*/
を入れ替えて
FILE *file; /*ファイルのポインタを用意*/
srand((unsigned)time(NULL)); /*乱数の初期化*/
にしてみてください
回答ありがとうございます。入れ替えた結果望ましい実行結果が
出ました。このミスには気をつけないといけませんね^^;
ご教授ありがとうございました。m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Excel(エクセル) 【マクロ】【VBA】同じフォルダ内にあるエクセルのデータを転記したい 2 2023/07/26 15:13
- その他(プログラミング・Web制作) Arduinoに関する質問 4 2023/08/07 21:19
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Excel(エクセル) 【関数】【マクロ】データの転記の方法について 2 2023/07/26 15:22
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Access(アクセス) Access2016のExcelインポートの機能のことで教えてください 1 2022/09/11 14:58
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- その他(プログラミング・Web制作) VS codeを使って、ラズパイ Picoを動かせる簡単な方法 1 2023/04/27 13:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ルート証明?
-
texに関する初歩的な質問
-
外部設計の仕様書
-
自作ゲームについて・・・
-
BOXにカーソルを合わせると、BO...
-
A.B(C.D...)テストで使用するリ...
-
納品 vs ご納品 どちらが正し...
-
どうすれば過剰発注抑えられま...
-
購入手続き後の値上げ
-
東京でヨコイのソース買えますか?
-
ひな型ってなんですか?
-
グーグルの障害者訓練プログラ...
-
VPNについて
-
卒業制作でてんてこまいです…
-
マスクROM と PROMの違いについて
-
Zと2とか紛らわしいのがあるか...
-
洋風のおいしいとんかつソース...
-
EXCELからデータベース(SQLite)...
-
日用雑貨メーカーです。発注書...
-
業務委託契約の仕事のトラブル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
texに関する初歩的な質問
-
P2P地震速報のEEW APIの仕様書...
-
VBからBeckyを使用したメール送...
-
JUnit結果出力をファイルに書き...
-
Excel-VBA コンテンツの作成日時
-
C#の単体テストでローカル変数...
-
C#単体テストで同クラス内の呼...
-
ホームページ・ビルダーで「e...
-
テスト仕様書作成って初心者(...
-
UNIX:テキストファイルのNULL...
-
Visial C++におけるプログラミング
-
テスト仕様書
-
AtomPubでlivedoorブログに記事...
-
仕様書に書かれていないこと
-
VB6 コードでメニュー作成
-
EXCEL_VBAでOracleにADO接続し...
-
Verilogの参考書のお勧めを教え...
-
ハノイ塔の非再帰について
-
納品の定義,システムの動作の常...
-
HWNDへの変換
おすすめ情報