我在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';
}
这两个函数用于读取运行次数和输出文件名。第一个功能起作用,但第二个功能不起作用。从这里开始,进一步的输入函数似乎跳过了行。我猜它是因为sscanf在这个函数中从同一行读取两个参数。在linux gcc和gnu gcc编译器中sscanf有什么区别吗?提前谢谢。
如果您想查看完整代码,请转到http://omlc.ogi.edu/software/mc/和MCML部分。