The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

Go Back   De Unix-en Linux Forum > Top Forums > UNIX voor Dummies Questions & Answers
.
google unix.com



UNIX voor Dummies Questions & Answers Als u niet zeker weet waar je een Unix-of Linux vraag, post het hier. Alle UNIX-en Linux beginners van harte welkom!!

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Floating Point Uitzondering Mandar123 Linux 3 01-22-2009 09:51
Floating point uitzondering! ssk01 Linux 3 12-24-2008 02:20 PM
Floating point error in C Hara Hoog Niveau Programmering 2 06-18-2008 05:43
Afronding van de waarde van Floating point waarde damansingh Programmeren en Shell Scripting 7 05-21-2008 09:46
Floating Point Divisie gsatch Programmeren en Shell Scripting 1 07-25-2002 04: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 Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 03-11-2009
headrush headrush is offline
Geregistreerde gebruiker
  
 

Join Datum: maart 2009
Krabbels: 1
floating point fout in linux + C

Hier is een programma en zijn eenvoudig. Het vereist bestand afhandeling en sommige berekeningen, maar op draaien Ik krijg niet de vereiste result.It lijkt erop dat de code buiten het dossier te lezen, terwijl de buitenste lus is niet tenuitvoerleggingsstaat bijvoorbeeld de print verklaring wordt niet afgedrukt . Plz Help!

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

int main (int argc, char * args [])
(
FILE * fp;
char ch;
int belasting \u003d 0, waarde \u003d 0, gewicht \u003d 0;
int i \u003d 0, count \u003d 0, P, K \u003d 1, onder j, * kosten, regel \u003d 1, U;
if (argc! \u003d 2) (
printf ( "\ nInsufficient nee. argumenten");
exit (0);
)
fp \u003d fopen (args [1], "r");
if (fp \u003d\u003d NULL) (
printf ( "\ nFile kan niet worden geopend");
exit (0);
)
while ((ch \u003d fgetc (fp ))!\u003d' \ n ') (
if (isDigit (ch)) (
p \u003d CH-'0 ';
belasting \u003d belasting * 10 + p;
)
)
printf ( "\ nload \u003d% d \ n", "load");
i \u003d 0;
while ((ch \u003d fgetc (fp)! \u003d EOF)) (
value \u003d 0;
gewicht \u003d 0;
k \u003d 0;
u \u003d 0;
while (ch! \u003d '\ n') (
/ / Printf ( "\ nline \u003d% d, gewicht \u003d% d, waarde \u003d% d", lijn, gewicht, waarde);

if ((isAlpha (ch) | | isDigit (ch)) & & k \u003d\u003d 0) (
while (ch! \u003d '') (
ch \u003d fgetc (fp);
)
k + +;
)
if (gewicht \u003d\u003d 0) (
while (ch! \u003d '') (
p \u003d CH-'0 ';
gewicht \u003d gewicht * 10 + p;
ch \u003d fgetc (fp);
)
)
/ / Printf ( "\ nweight \u003d% d", gewicht);
if (waarde \u003d\u003d 0) (
while (ch! \u003d '\ n') (
p \u003d CH-'0 ';
waarde \u003d waarde * 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 waarde / gewicht;
printf ( "regel% d \u003d gewicht \u003d% d, waarde \u003d% d, kosten \u003d% d \ n", lijn, gewicht, waarde, u);
lijn + +;
)
/ / Tellen \u003d i-1;
fclose (fp);
return 0;
)

De tekst bestand dat ik gebruik is strikt van de volgende vorm:
1250
LJS93K 1300 10500
J38ZZ9 700 4750
HJ394L 200 3250
01IE82 75 10250

er is een line-break na iedere lijn en de eerste lijn (1250) is de "belasting" waarde, de eerste kolom van alles moet worden vermeden de 2e kolom is het gewicht en de 3e kolom waarde.
Een ding Ik gebruik Ubuntu distro die gebruik maakt van bash shell!
  #2 (permalink)  
Old 03-11-2009
Corona688 Corona688 is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2005
Locatie: Saskatchewan
Berichten: 1933
Code-tags voor code alsjeblieft, ze maken het onleesbaar leesbaar. [Code] stuff [/ code] zonder de extra spaties.

Je krijgt 'floating point fout' wanneer u delen door nul, controleren om te zien of er dingen worden steeds geparseerd de manier die u verwacht.

U hoeft niet te gebruiken fgetc te lezen in de tekst gegevens! Probeer scanf. Of beter nog, sscanf. Lees in de gegevens een regel tegelijk vervolgens feed via scanf te krijgen wat je wilt in een keer.

Code:
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();
}
U krijgt puristen klagen over scanf en zijn gevaren, maar zijn verreweg de voorkeur aan de opbouw van uw eigen integer-parsing routines. In deze mode is het redelijk veilig, zonder risico van buffer overflows en geen van de vreemde half-een-lijn-gegeten problemen vlakte scanf is berucht om.

Laatst gewijzigd door Corona688; op 03.11.2009 11:25 PM.. Reden: meer code
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 04:18 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0