さて、これはちょっと奇妙な質問ですが、なぜこれが機能しないのかわかりません...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME 15
#define MAX_SUBSEC 3
#define N 128
struct student{
int term;
int id;
char lastname[MAX_NAME];
char firstname[MAX_NAME];
char subjectnam[MAX_SUBSEC];
int subject;
int catalog;
char section[MAX_SUBSEC];
}students[10];
int main(){
int i;
char poop[10];
char fname[128];
printf("Enter the name of the text file: ");
scanf("%123s",fname);
strcat(fname,".txt");
FILE *inputf;
inputf = fopen(fname,"w");
if (inputf == NULL){
printf("I couldn't open results.dat for writing.\n");
exit(0);
}
printf("Enter first name: "); scanf("%s", poop);
fprintf(inputf, "%s\n", poop);
for (i=0; i<=10; ++i)
fprintf(inputf, "%d, %d\n", i, i*i);
fclose(inputf);
return 0;
}
これで、このコードの終わりは、ファイルの作成と書き込み、およびその他すべての優れた機能の練習をしているだけです。これをコーディングし、NetBeansを使用してMacで実行すると、正常に機能しました。ちなみに、これはすべてC++ではなくCで実行しています。今、私はデスクトップでそれをやりたいのですが、ビジュアルはそれを持っていません、何もしませんが、cmdウィンドウを開き、ファイル名を入力するように指示されている最初の行を取り、Enterキーを押してプログラムを閉じます終了します。ソースファイルアイテムを追加し、適切な* .c拡張子を付けて名前を付けました。以前は、このIDEで* .cをコーディングしましたが、今までファイルを作成する必要はありませんでした。これが問題であることを保証できます。なぜこれがすべて起こるのか誰かが知っていますか?
編集:問題を特定するためにいくつかのコードを分割しましたが、これらの行が原因のようです...
FILE *inputf;
inputf = fopen(fname,"w");
ビルドして実行しようとすると、典型的なVCエラーメッセージが表示され、これらの「不注意」に関する出力にこれが表示されます。
"エラーC2275:'FILE':式としてのこのタイプの不正使用" "エラーC2065:'inputf':宣言されていない識別子" "警告C4047:'=':'int'は'FILE*'とは間接レベルが異なります"
では、これらの行がMacのNetBeansで完全に機能するのに、Windowsでは機能しないのはなぜですか?私が想像するある種の移植性の問題?