使用sscanf()从同一行读取多个参数
我已经用C修改了一些代码。我将mingw与gnu gcc编译器和代码块一起用作IDE。代码在此环境下编译并运行良好。但是,当我尝试在远程linux服务器上运行代码时,或者实际上在任何linux系统上都没有。它可以编译,但执行是个问题。 我给出了我认为相关的代码部分:使用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
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来调用这些部分。谢谢