0

私は次のデータファイルを持っています

1.0
2.0
3.0 

これはファイルですtext.dat。私がこれまでに持っている次のコードがありmygetline.c、実行可能ファイルにコンパイルしますmygetline。それを実行すると、データファイルが実行可能ファイルに ./mygetline < text.dat送られ、bashターミナルに送られます。

そのようなデータファイルを読み込んで、その列とその機能をstdoutに出力したいと思います。これがこれまでのコードです。

#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

のドキュメントを読み直してくださいsscanf

フォーマットは2番目のパラメーターです。
ただし、最初のパラメータ"%lf"としてを配置します。

于 2013-01-15T01:39:52.527 に答える