The UNIX and Linux Forums  
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

Go Back   Die UNIX-und Linux-Foren > Top Foren > UNIX for Dummies Questions & Answers
.
Google unix.com



UNIX for Dummies Questions & Answers Wenn Sie nicht sicher sind, wo Sie eine UNIX-oder Linux-Frage, post it here. Alle UNIX-und Linux-Anfänger willkommen!

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Floating Point Exception Mandar123 Linux 3 01-22-2009 09:51 AM
Fließkomma-Ausnahme! ssk01 Linux 3 12-24-2008 02:20 PM
Fließkomma-Fehler in C Hara High-Level-Programmierung 2 06-18-2008 05:43 AM
Ergänzt wird der Wert der Fließkomma-Wert damansingh Shell Programmierung und Scripting 7 05-21-2008 09:46 AM
Floating Point Division gsatch Shell Programmierung und 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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 03-11-2009
Headrush headrush is offline
Registrierte Nutzer
  
 

Join Date: März 2009
Beiträge: 1
Fließkomma-Fehler in Linux + C

Hier ist ein Programm und seine ziemlich einfach. Es erfordert Dateien und einige Berechnungen, sondern es läuft Ich bin mir nicht immer die erforderliche result.It scheint, dass der Code außerhalb der Datei lesen, die äußeren while-Schleife ist nicht der Ausführung zB der Druck-Anweisung wird nicht gedruckt . plz help!

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

int main (int argc, char * args [])
(
FILE * fp;
char ch;
int load \u003d 0, value \u003d 0, weight \u003d 0;
int i \u003d 0, count \u003d 0, p, k \u003d 1, J, * Kosten, line \u003d 1, u;
if (argc! \u003d 2) (
printf ( "\ nInsufficient-Nr. Argumente");
exit (0);
)
fp \u003d fopen (args [1], "r");
if (fp \u003d\u003d NULL) (
printf ( "\ nFile konnte nicht geöffnet werden");
exit (0);
)
while ((ch \u003d fgetc (fp ))!\u003d' \ n ') (
if (isdigit (ch)) (
CH-p \u003d'0 ';
load \u003d load * 10 + p;
)
)
printf ( "\ nLOAD \u003d% d \ n", Last);
i \u003d 0;
while ((ch \u003d fgetc (fp)! \u003d EOF)) (
Wert \u003d 0;
Gewicht \u003d 0;
k \u003d 0;
u \u003d 0;
while (ch! \u003d '\ n') (
/ / Printf ( "\ nline \u003d% d, Gewicht \u003d% d, value \u003d% d", Linie, Gewicht, Wert);

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 '') (
CH-p \u003d'0 ';
Gewicht \u003d Gewicht * 10 + p;
ch \u003d fgetc (fp);
)
)
/ / Printf ( "\ nweight \u003d% d", Gewicht);
if (value \u003d\u003d 0) (
while (ch! \u003d '\ n') (
CH-p \u003d'0 ';
Wert \u003d Wert * 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 value / Gewicht;
printf ( "line% d \u003d Gewicht \u003d% d, value \u003d% d, cost \u003d% d \ n", Linie, Gewicht, Wert, u);
line + +;
)
/ / Count \u003d i-1;
fclose (fp);
return 0;
)

Die Text-Datei, die ich unbedingt mit der das folgende Format:
1250
LJS93K 1300 10500
J38ZZ9 700 4750
HJ394L 200 3250
01IE82 75 10250

Es gibt einen Line-Pause nach jeder Zeile und die erste Zeile (1250) ist die "Last"-Wert, der ersten Spalte eines jeden ist, um zu vermeiden, die 2. Spalte ist Gewicht und die 3. Spalte Wert.
Eine weitere Sache, die ich bin mit Ubuntu Distribution verwendet, die Bash-Shell!
  #2 (permalink)  
Old 03-11-2009
Corona688 Corona688 is offline
Registrierte Nutzer
  
 

Join Date: Aug 2005
Lage: Saskatchewan
Beiträge: 1933
Code-Tags für Code Bitte, sie machen das nicht lesbar lesbar. [Code] Bestellung [/ code] ohne Leerzeichen.

Sie erhalten "Floating Point Error", wenn Sie Division durch Null, prüfen Sie, ob die Dinge werden immer analysiert, wie Sie erwarten.

Sie brauchen nicht zu verwenden fgetc zu lesen, in Text-Daten! Versuchen Sie scanf. Oder besser noch, sscanf. Lesen Sie Daten in einer Zeile in einer Zeit, dann durch scanf zu bekommen, was Sie in einem Rutsch.

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();
}
Sie erhalten Puristen beklagen über scanf und ihre Gefahren, aber seine weit besser zum Aufbau Ihrer eigenen Integer-Parsing-Routinen. In diesem Mode ist es ziemlich sicher, ohne Gefahr von Buffer Overflows und keiner von den seltsamen Halb-a-line-Probleme gegessen plain scanf ist für die berühmt-berüchtigten.

Zuletzt bearbeitet von Corona688; am 03-11-2009 11:25 PM.. Grund: noch mehr Code
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 05:47 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0