The UNIX and Linux Forums  

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > UNIXのダミー質問と回答のため
Googleのunix.com



UNIXのダミー質問と回答のため もしUNIXやLinuxについての質問があれば、ここに投稿してください。すべてのUNIXおよびLinux初心者歓迎!

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
浮動小数点例外 Mandar123 リナックス 3 2009年1月22日 09:51午前
浮動小数点の例外! ssk01 リナックス 3 2008年12月24日 02:20午後
C言語で浮動小数点エラー 高レベルのプログラミング 2 2008年6月18日 06:43午前
浮動小数点値の値を丸め damansingh シェルプログラミングとスクリプティング 7 2008年5月21日 10:46午前
浮動小数点課 gsatch シェルプログラミングとスクリプティング 1 2002年7月25日 05:03午後

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2009年3月11日
headrush headrush is offline
登録ユーザー
  
 

参加日: 2009年3月
記事: 1
Linuxで、浮動小数点エラー+ Cで

ここでは、プログラムは、その非常に簡単です。また、いくつかの計算に必要なファイルの処理が必要なんですけど、それを実行しているアムresult.Itていないファイルを読むのは、外側のwhileループは、印刷を実行するステートメント例ではない外部のコードを印刷されていないようだ。 Plzヘルプ!

#含まれ<stdio.h>
#含まれ<stdlib.h>
#含まれ<ctype.h>

INTはメイン( INTはargc 、文字* args [ ] )

ファイル* fp ;
文字チャンネル;
INTは負荷\u003d 0 、値\u003d 0 、重量\u003d 0 ;
INTは私\u003d 0 、カウント\u003d 0 、 pと韓国\u003d 1 J氏*コスト、行\u003d 1 、 ū ;
場合( ! \u003d 2 ) ( argc
printf ( " \ nInsufficientない。引数" ) ;
出口( 0 ) ;

fp \u003d fopen ( args [ 1 ] 、 "研究" ) ;
( fp \u003d\u003dがNULL ) (
printf ( " \ nFile "を開くことができませんでした) ;
出口( 0 ) ;

( (チャネル\u003d fgetc ( fp ))!\u003d' \ n 'を)中(
場合( (チャネル) ) ( isdigit
チャネル- p \u003d '0 ' ;
負荷\u003d負荷* 10 + Pキー;


printf ( " \ nload \u003d % d個の\ N "の、負荷) ;
私\u003d 0 ;
( (チャネル\u003d fgetc ( fp ) ! \u003d EOFを) ) (
値\u003d 0 ;
重量\u003d 0 ;
韓国\u003d 0 ;
ū \u003d 0 ;
中(チャネル! \u003d ' \ n 'を) (
/ / printf ( " \ nline \u003d % d個、重さ\u003d % dの値\u003d % d個" 、線、重さ、値) ;

場合( ( isalpha (チャンネル) | | isdigit (チャネル) ) & & kは\u003d\u003d 0 ) (
中(チャネル! \u003d ' ' ) (
チャネル\u003d fgetc ( fp ) ;

韓国+ + ;

場合(重量\u003d\u003d 0 ) (
中(チャネル! \u003d ' ' ) (
チャネル- p \u003d '0 ' ;
重量\u003d重量* 10 + Pキー;
チャネル\u003d fgetc ( fp ) ;


/ / printf ( " \ nweight \u003d % d個" 、重量) ;
場合(値\u003d\u003d 0 ) (
中(チャネル! \u003d ' \ n 'を) (
チャネル- p \u003d '0 ' ;
値\u003d値* 10 + Pキー;
チャネル\u003d fgetc ( fp ) ;


/ / printf ( " \ nValue \u003d % d個" 、値) ;
場合(チャンネル\u003d\u003d ' ' ) (
中(チャンネル\u003d\u003d ' ' ) (
チャネル\u003d fgetc ( fp ) ;




ū \u003d値/重量;
printf ( "行\u003d % d個の重さ\u003d % dの値\u003d % d個、コスト\u003d % d個の\ N "の、線、重さ、価値、 ū ) ;
ライン+ + ;

/ /カウント\u003dのi - 1 ;
fclose ( fp ) ;
戻り0 ;


テキストファイルを使用していますが、厳密には、次のような形式です:
1250
LJS93K 1300 10500
J38ZZ9 700 4750
HJ394L 200 3250
01IE82 75 10250

ラインですが、各ラインの後の最初の行( 1250 )を破るの"負荷"の値は、すべて回避される2つ目の列の最初のカラムの重量とは、第3列が値となります。
私はbashシェルを使用してのUbuntuディストリビューションを使用しているもう1つのこと!
  #2固定リンク)  
Old 2009年3月11日
Corona688 Corona688 is offline
登録ユーザー
  
 

参加日: 2005年8月
場所:サスカチュワン
投稿数: 1,944
コードしてくださいコードのタグには、読めない読める。 [コード]もの[ /コード]は、余分なスペースがなく。

あなたが' '時にゼロで、期待どおりのことを解析しているかどうかをチェック分ける浮動小数点のエラーが表示される。

fgetcテキストデータで読む場合に使用する必要はありません! scanfをお試しください。以上は、 sscanf 。読み取りデータを1行に1時間でscanf経由して1つで何を望む結果を得るにはフィードへ移動します。

コード:
char buf[512], garbage[512];
if(fgets(buf, 512, fp)==NULL0
{
  fprintf(stderr, "Can't read first line\n");
  return(1);
}

if(sscanf(buf, "%d", &load) != 1)
{
  fprintf(stderr, "Can't get load value\n");
  return(1);
}

while(fgets(buf, 512, fp)!=NULL)
{
  if(sscanf(buf, "%s %d %d", garbage, &weight, &value) != 3)
  {
    fprintf(stderr, "Couldn't parse line '%s'\n", buf);
    continue;
  }

  do_stuff();
}
あなたは純粋主義者とその危険性が、 scanfまで、独自の解析ルーチンを構築するのが好ましい整数不満になっちゃうよ。 この方法ではかなり、バッファオーバーフローして変ななしの半分のリスクなしで安全に使用するラインプレーンscanfの問題を食べるために悪名高いです。

編集Corona688で最終; 2009年3月11日に 11:25午後..理由:詳細なコードを追加
Closed Thread

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 06:41午前


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0