使用sscanf()从同一行读取多个参数

使用sscanf()从同一行读取多个参数,c,linux,scanf,C,Linux,Scanf,我已经用C修改了一些代码。我将mingw与gnu gcc编译器和代码块一起用作IDE。代码在此环境下编译并运行良好。但是,当我尝试在远程linux服务器上运行代码时,或者实际上在任何linux系统上都没有。它可以编译,但执行是个问题。 我给出了我认为相关的代码部分: short ReadNumRuns(FILE* File_Ptr) { char buf[STRLEN]; short n=0; FindDataLine(File_Ptr); /* skip file version

我已经用C修改了一些代码。我将mingw与gnu gcc编译器和代码块一起用作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有什么区别吗?提前谢谢


如果您想查看完整的代码,请转到和MCML部分。

文件的(开头)内容是什么,这两个函数在该内容上输出了什么?对于直接了解问题的人来说,如果您编写一个调用这些函数的小型demo main()会很有帮助,并提供一个示例数据文件,一起演示问题。有时,编写演示程序本身的行为会暴露问题&您可能自己解决问题。输入文件的开头包含一些以“#”开头的文本。还有其他函数可以忽略以#开头的行或第一个字符为“\0”的行。读入变量的第一行是运行次数。由于我还不被允许回答我自己的问题,所以我不能将其放入示例输入文件中。好的,我将编写一个单独的main来调用这些部分。谢谢