The UNIX and Linux Forums  

Go Back   A UNIX és Linux Forums > Top Fórumok > A UNIX a dummies Kérdések és válaszok
.
google unix.com



A UNIX a dummies Kérdések és válaszok Ha nem biztos benne, hogy hol osztályozhatom Unix vagy Linux kérdés, post it here. Minden UNIX és Linux newbies welcome!

Több, UNIX és Linux fórum témák Ön által talált Hasznos
Szál Thread Starter Fórum Válaszok Utolsó hozzászólás
Lebegőpontos Kivétel Mandar123 Linux 3 01-22-2009 09:51 AM
Lebegőpontos kivétel! ssk01 Linux 3 12-24-2008 02:20 PM
Lebegőpontos hiba a C Hara Magas szintű Programozás 2 06-18-2008 06:43 AM
Lekerekítések értéke Lebegőpontos érték damansingh Shell programozás és Scripting 7 05-21-2008 10:46 AM
Lebegőpontos osztály gsatch Shell programozás és Scripting 1 07-25-2002 05:03 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Téma eszközök Keresés a téma Rate Thread Megjelenítési módok
  #1 (permalink)  
Old 03-11-2009
headrush headrush is offline
Regisztrált felhasználó
  
 

Join Date: Mar 2009
Hozzászólások: 1
lebegőpontos hiba a Linux + C

Itt van egy program, és nagyon egyszerű. Megköveteli file kezelő, és számítások, hanem a futó, hogy én nem kapok a szükséges result.It tűnik, hogy a kód kívül a fájlt olvasni, míg a külső loop nem végrehajtó pl. nyomtatott nyilatkozat még nem nyomtatott . plz Help!

# include <stdio.h>
# include <stdlib.h>
# include <ctype.h>

int main (int argc, char * args [])
(
FILE * fp;
char ch;
int terhelés \u003d 0, értéke \u003d 0, tömeg \u003d 0;
int i \u003d 0, count \u003d 0, p, k \u003d 1, J, * költségei, line \u003d 1, u;
if (argc! \u003d 2) (
printf ( "\ nInsufficient nem. érvet");
exit (0);
)
fp \u003d fopen (args [1], "r");
if (fp \u003d\u003d NULL) (
printf ( "\ nFile nem nyitható meg");
exit (0);
)
while ((ch \u003d fgetc (fp ))!\u003d' \ n ') (
if (isdigit (CH)) (
p \u003d ch-'0 ';
load \u003d load * 10 + p;
)
)
printf ( "\ nload \u003d% d \ n", "terhelés");
i \u003d 0;
while ((ch \u003d fgetc (fp)! \u003d EOF)) (
value \u003d 0;
súly \u003d 0;
k \u003d 0;
u \u003d 0;
while (ch! \u003d '\ n') (
/ / Printf ( "\ nline \u003d% d, tömeg \u003d% d, értéke \u003d% d", sor, tömeg, érték);

if ((isalpha (CH) | | isdigit (CH)) & & k \u003d\u003d 0) (
while (ch! \u003d "") (
ch \u003d fgetc (fp);
)
k + +;
)
if (súly \u003d\u003d 0) (
while (ch! \u003d "") (
p \u003d ch-'0 ';
súly \u003d tömeg * 10 + p;
ch \u003d fgetc (fp);
)
)
/ / Printf ( "\ nweight \u003d% d", tömeg);
if (érték \u003d\u003d 0) (
while (ch! \u003d '\ n') (
p \u003d ch-'0 ';
value \u003d érték * 10 + p;
ch \u003d fgetc (fp);
)
)
/ / Printf ( "\ nValue \u003d% d", value);
if (ch \u003d\u003d "") (
while (ch \u003d\u003d "") (
ch \u003d fgetc (fp);
)
)
)

U \u003d érték / tömeg;
printf ( "sor \u003d% d \u003d% d súlya, értéke \u003d% d, költség \u003d% d \ n", sor, tömeg, érték, u);
line + +;
)
/ / Count \u003d i-1;
fclose (fp);
return 0;
)

A szöveges fájl, amit használok feltétlenül a következő formában:
1250
LJS93K 1300 10500
J38ZZ9 700 4750
HJ394L 200 3250
01IE82 75 10250

van egy sor-szünet után minden sor, és az első sorban (1250) a "terhelés" értéke, az első oszlop minden El kell kerülni, hogy a 2. oszlop a súly és a 3. oszlop értéke.
Még egy dolog, amit használok ubuntu distro használó bash shell!
  #2 (permalink)  
Old 03-11-2009
Corona688 Corona688 is offline
Regisztrált felhasználó
  
 

Join Date: Aug 2005
Helyszín: Saskatchewan
Hozzászólások: 1.972
Kód címkéket a kódot kérem, hogy az olvashatatlan olvasható. [Code] cucc [/ code] nélkül szóközöket.

You get "lebegőpontos hiba", ha ezt osszuk el a nullát, ellenőrizze, hogy a dolgok egyre parsed ahogy elvárható.

Nem kell használni fgetc olvasni szöveges adat! Próbálja scanf. Vagy még jobb, sscanf. Olvassa el az adatokat egy sor olyan időpontban majd takarmány keresztül scanf, hogy mit akarsz egy menni.


Kód:
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();
}

Kapsz purists panaszkodnak scanf és annak veszélyeiről, de sokkal előnyösebb az épület a saját egész-elemzési rutinok. Használt ilyen módon is elég biztonságos, és nem fenyeget a puffer felelőssége, és sem az idegen fél-egy-line-evett problémák sima scanf van a hírhedt.

Last edited by Corona688; 03/11/2009 at 11:25 PM.. Ok: több kód
Closed Thread

Könyvjelzõk

Téma eszközök Keresés a téma
Keresés a téma:

Részletes keresés
Megjelenítési módok Rate this thread
Rate this thread:

Posting szabályzat
Ön nem post new threads
Ön nem post válaszok
Ön nem post Csatolmányok
Ön nem szerkeszteni az üzeneteidet

BB kód van Be
Smilies vannak Be
[IMG] kód Be
HTML kód Ki
Trackbacks vannak Be
Pingbacks vannak Be
Refbacks vannak Be




Minden idő GMT -4. Az idő most 05:58 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Nyelvre lefordítva Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
A UNIX és Linux Fórum Tartalom Copyright © 1993-2009. Minden jog Reserved.Ad menedzsment RedTyger

Content Relevant URLs by vBSEO 3.2.0