0

我有以下数据文件

1.0
2.0
3.0 

这是一个文件text.dat。到目前为止,我拥有以下代码,mygetline.c并将其编译为可执行文件mygetline。执行它我将数据文件输入到可执行文件中,因此 ./mygetline < text.dat在 bash 终端中。

我想像这样读取数据文件并打印到标准输出该列,以及它的一些功能。这是到目前为止的代码。

#include <stdio.h>
int mygetline ( char s[], int lim )
{
  int c, i;

  i = 0;
  while( --lim > 0 && ( c = getchar() ) != EOF && c != '\n' )
  s[i++] = c;
  if ( c == '\n' )
  s[i++] = c;
  s[i] = '\0';
  return i ;
 }

void main()
{
     const int maxline = 10000;
     int nl, length;
     char line[maxline];
     double value ; 
     nl = 0;
     while ( ( length = mygetline( line, maxline ) ) != 0 ) //avoiding blanks
          {
    //Original error  sscanf( "%lf", line, &value ) ; //trying to get each line   
                                               //as the right 
                                              //number
       //FOllowing line is corrected implementation of sscanf()
              sscanf( line, "%lf", &value ) ; 
              printf( "%lf %lf\n", value ,value*value ) ; //trying to output x & x*x
           }
 }

输出如下

0.000000 0.000000
0.000000 0.000000
0.000000 0.000000

我想要类似的东西

1.0 1.0 
2.0 4.0 
3.0 9.0

到任何精度。有没有人对我缺少什么来获得我想要的输出有任何建议?谢谢

4

1 回答 1

1

Re-read the documentation for sscanf.

The format is the second parameter.
But you put the "%lf" as the first parameter.

于 2013-01-15T01:39:52.527 回答