![]() |
|
|
google unix.com
|
|||||||
| Fórumok | Regisztráció | Fórum Szabályok | Linkek | Albumok | GYIK | Tagok listája | Naptár | Keres | Mai hozzászólások | Megjelöl Fórumok Olvas |
| 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 |
![]() |
|
|
LinkBack | Téma eszközök | Keresés a téma | Rate Thread | Megjelenítési módok |
|
|
|
||||
|
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! |
|
||||
|
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 |
![]() |
| Könyvjelzõk |
| Téma eszközök | Keresés a téma |
| Megjelenítési módok | Rate this thread |
|
|