![]() |
|
|
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午後 |
![]() |
|
|
LinkBack | スレッドツール | このスレッドを検索 | スレッドを評価 | 表示モード |
|
|
|
||||
|
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つのこと! |
|
||||
|
コードしてくださいコードのタグには、読めない読める。 [コード]もの[ /コード]は、余分なスペースがなく。
あなたが' '時にゼロで、期待どおりのことを解析しているかどうかをチェック分ける浮動小数点のエラーが表示される。 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の問題を食べるために悪名高いです。編集Corona688で最終; 2009年3月11日に 11:25午後..理由:詳細なコードを追加 |
![]() |
| ブックマーク |
| スレッドツール | このスレッドを検索 |
| 表示モード | このスレッド |
|
|