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

时间:2012-07-19 16:02:39

标签: c linux scanf

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

0 个答案:

没有答案