The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > UNIX for Dummies SpørsmÃ¥l og svar
.
google unix.com



UNIX for Dummies Spørsmål og svar Hvis du er usikker på hvor du skal legge inn en UNIX-eller Linux-spørsmålet, legger den her. Alle UNIX og Linux newbies velkommen!

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Floating Point Exception Mandar123 Linux 3 01-22-2009 09:51
Floating Point unntak! ssk01 Linux 3 12-24-2008 02:20
Floating Point feil i C Hara High Level Programmering 2 06-18-2008 06:43
Avrunding av verdien av Floating Point verdi damansingh Shell programmering og Skripting 7 05-21-2008 10:46
Floating Point Division gsatch Shell programmering og Skripting 1 07-25-2002 05:03

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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 03-11-2009
headrush headrush is offline
Registrert bruker
  
 

Bli Date: Mar 2009
Innlegg: 1
Floating Point feil i linux + C

Her er et program og ganske enkel. Det krever filen håndtering og noen beregninger men kjører det jeg ikke får den nødvendige result.It synes at koden utenfor fil lese ytre mens løkken ikke kjøre f.eks utskriften erklæringen ikke blir skrevet ut . plz Hjelp!

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

int main (int argc, char * args [])
(
FILE * fp;
char ch;
int last \u003d 0, verdi \u003d 0, vekt \u003d 0;
int i \u003d 0, count \u003d 0, p, k \u003d 1, j * kost linje \u003d 1, u;
if (argc! \u003d 2) (
printf ( "\ nInsufficient no. argumenter");
exit (0);
)
fp \u003d fopen (args [1], "r");
if (fp \u003d\u003d NULL) (
printf ( "\ nFile kan ikke åpnes");
exit (0);
)
mens ((x \u003d fgetc (fp ))!\u003d' \ n ') (
if (isdigit (x)) (
p \u003d ka-'0 ';
Beregnigner \u003d laste * 10 + p;
)
)
printf ( "\ nload \u003d% d \ n", last);
i \u003d 0;
mens ((x \u003d fgetc (fp)! \u003d EOF)) (
verdi \u003d 0;
vekt \u003d 0;
k \u003d 0;
u \u003d 0;
while (ch! \u003d '\ n') (
/ / Printf ( "\ nline \u003d% d, vekt \u003d% d, verdi \u003d% d", linje, vekt, verdi);

if ((isalpha (CH) | | isdigit (x)) & & k \u003d\u003d 0) (
while (ch! \u003d "") (
ch \u003d fgetc (fp);
)
k + +;
)
if (vekt \u003d\u003d 0) (
while (ch! \u003d "") (
p \u003d ka-'0 ';
vekt \u003d vekt * 10 + p;
ch \u003d fgetc (fp);
)
)
/ / Printf ( "\ nweight \u003d% d", vekt);
if (verdi \u003d\u003d 0) (
while (ch! \u003d '\ n') (
p \u003d ka-'0 ';
verdi \u003d verdi * 10 + p;
ch \u003d fgetc (fp);
)
)
/ / Printf ( "\ nValue \u003d% d", verdi);
if (ch \u003d\u003d '') (
while (ch \u003d\u003d '') (
ch \u003d fgetc (fp);
)
)
)

u \u003d verdi / vekt;
printf ( "line \u003d% d vekt \u003d% d, verdi \u003d% d, pris \u003d% d \ n", line, vekt, verdi, u);
line + +;
)
/ / Count \u003d i-1;
fclose (fp);
return 0;
)

Tekstfilen at jeg bruker er strengt av følgende format:
1250
LJS93K 1300 10500
J38ZZ9 700 4750
HJ394L 200 3250
01IE82 75 10250

det er et linjeskift etter hver linje og den første linjen (1250) er "last" value, den første kolonnen i hver skal unngås 2nd kolonnen vekt og 3. kolonnen verdi.
En ting jeg bruker ubuntu distro som bruker bash shell!
  #2 (permalink)  
Old 03-11-2009
Corona688 Corona688 is offline
Registrert bruker
  
 

Bli Dato: Aug 2005
Beliggenhet: Saskatchewan
Innlegg: 1965
Code koder for kode kan du, de gjør uleselig lesbar. [Kode] stuff [/ kode] uten ekstra mellomrom.

Du får "Floating Point feil" når du deler med null, kan du kontrollere om ting får analyseres slik du forventer.

Du trenger ikke å bruke fgetc å lese i tekst-data! Prøv scanf. Eller bedre ennå, sscanf. Les i data én linje i en tid da feed via scanf å få det du ønsker på en reise.


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();
}

Du får purists over scanf og dens farer men langt å foretrekke å bygge din egen heltall-analyseproblemer rutiner. Brukt på denne måten er det ganske sikkert, uten risiko for buffer overskrider og ingen av de merkelige halv ett-line-spist problemer ren scanf er beryktet for.

Sist endret av Corona688; 03-11-2009 på 11:25.. Årsak: legge til mer kode
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er PÃ¥
Smilefjes er PÃ¥
[IMG] koden PÃ¥
HTML-koden Av
Pingbacks er PÃ¥
Refbacks er PÃ¥




Alle klokkeslett er GMT -4. NÃ¥ er klokken 02:44.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0