C のコードをいくつか変更しました。mingw を gnu gcc コンパイラーと Codeblocks を IDE として使用しています。コードはこれでコンパイルされ、うまく機能します。しかし、リモート Linux サーバー、または実際には任意の Linux システムでコードを実行しようとすると、実行されません。コンパイルは問題ありませんが、実行が問題です。関連すると思われるコードの一部を示します。
short ReadNumRuns(FILE* File_Ptr)
{
char buf[STRLEN];
short n=0;
FindDataLine(File_Ptr); /* skip file version. */
strcpy(buf, FindDataLine(File_Ptr));
if(buf[0]=='\0') nrerror("Reading number of runs\n");
sscanf(buf, "%hd",&n);
printf("%s", buf);
printf("Number of runs: %hd ", n);
return(n);
}
void ReadFnameFormat(FILE *File_Ptr, InputStruct *In_Ptr)
{
char buf[STRLEN];
/** read in file name and format. **/
strcpy(buf, FindDataLine(File_Ptr));
printf("%s", buf);
if(buf[0]=='\0')
nrerror("Reading file name and format.\n");
sscanf(buf, "%s %c",In_Ptr->out_fname, &(In_Ptr->out_fformat) );
printf("%s", In_Ptr->out_fname);
printf("%c", In_Ptr->out_fformat);
if(toupper(In_Ptr->out_fformat) != 'B')
In_Ptr->out_fformat = 'A';
}
これら 2 つの関数は、実行回数と出力ファイル名を読み取るためのものです。最初の機能は機能しますが、2 番目の機能は機能しません。これ以降、さらに入力関数が行をスキップしているように見えます。sscanf がこの関数の同じ行から 2 つのパラメーターを読み取るためだと思います。Linux gcc コンパイラーと gnu gcc コンパイラーで sscanf に違いはありますか? 前もって感謝します。
完全なコードを見たい場合は、http: //omlc.ogi.edu/software/mc/ と MCML 部分にアクセスしてください。