0

我在 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 部分。

4

0 回答 0