The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > High Level Programming
.
google unix.com



High Level Programming Post frågor om C, C + +, Java, SQL och andra programmeringsspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
kontrollera Nollskiljt värde philplasma UNIX for Dummies Frågor & Svar 6 01-08-2008 04:51
kontroll uid filthymonk Shell-programmering och Skript 7 07-19-2007 11:40
Kontrollera cp framsteg MarGur UNIX for Dummies Frågor & Svar 0 05-15-2007 05:13
Kontroll för PXE maestro @ altiris Sun Solaris 5 05-25-2004 01:06

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 denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 03-06-2008
ramkrix ramkrix is offline
Registered User
  
 

Join Date: Dec 2007
Ort: TamilNadu, INDIEN
Inlägg: 52
Exclamation EOF kontroll under

Hej,

Jag tränar utöva program med System samtal.

Motion Fråga: skriva ett pogram att acceptera ett filnamn från användaren. Programmet ska skriva ecery femte byte av fil till standard output.

Min Program:

# Include <stdio.h>
# Include <fcntl.h>
# Include <error.h>

viktigaste ()
(
int fd, first_offset \u003d 5, move_offset \u003d 0, x \u003d 1;
char a, namn [20];
scanf ( "% s", namn);

fd \u003d open (namn, O_RDONLY, 0755);
printf ( "fd är% d", fd);

if (fd \u003d\u003d- 1)
(
printf ( "error");
exit (1);
)

while (x <5)
(
move_offset \u003d move_offset + first_offset;
lseek (FD, move_offset-1, 0);
read (fd, namn, sizeof (namn));
skriva (1, namn, 1);
x + +;
)
)


Effekt:
[ramki @ lindesk3 sysint_ex] $ cc ex1.c-o ex1
[ramki @ lindesk3 sysint_ex] $ ./ex1
. / test
FIVEfd är 3

Filen "Test" innehåll:
abcdFfghiIklmnVpqrsE



Min fråga nu:
1. i programmet, jag använde ett tag loop med en varaible "X" och jämföra det slumpmässiga ingen av mina val 5. Istället vill jag se EOF villkor i whilepart. Hur man kontrollerar det.
Om vi använder filen pekaren och fopen fn kan vi använda samtidigt (feof (fp) \u003d\u003d 0). Men vi använde syatem samtal och jag vet hur man kontrollerar villkor här.

2. I te programmet produktion, jag hittade "fem" innan du skriver ut den filedescriptor nummer. Men enligt min programflöde, FD ska skrivas ut först och sedan produktionen "fem".

3.Is det några othet sätt att skriva program mer enkelt och exakt, särskilt med hjälp piointer för att få namnet på filen, instaed att använda Array.

Please help ...

Tack,
Ramkrix
  #2 (permalänk)  
Old 03-06-2008
Shamrock shamrock is offline Forum Advisor  
Registered User
  
 

Join Date: oktober 2007
Ort: USA
Inlägg: 753
Citat:
Ursprungligen postat av ramkrix View Post

Min fråga nu:
1. i programmet, jag använde ett tag loop med en varaible "X" och jämföra det slumpmässiga ingen av mina val 5. Istället vill jag se EOF villkor i whilepart. Hur man kontrollerar det.
Om vi använder filen pekaren och fopen fn kan vi använda samtidigt (feof (fp) \u003d\u003d 0). Men vi använde syatem samtal och jag vet hur man kontrollerar villkor här.

2. I te programmet produktion, jag hittade "fem" innan du skriver ut den filedescriptor nummer. Men enligt min programflöde, FD ska skrivas ut först och sedan produktionen "fem".

3.Is det några othet sätt att skriva program mer enkelt och exakt, särskilt med hjälp piointer för att få namnet på filen, instaed att använda Array.

Please help ...

Tack,
Ramkrix


Kod:
#include <stdio.h>

main(int argc, char *argv[])
{
    char *infile;
    FILE *stream;

    infile = argv[1];
    stream = fopen(infile, "r");
}

... nu kan du använda ström status funktioner som feof eller fError.
  #3 (permalänk)  
Old 03-07-2008
ramkrix ramkrix is offline
Registered User
  
 

Join Date: Dec 2007
Ort: TamilNadu, INDIEN
Inlägg: 52
Red face

Tack för ditt svar Shamrock ..

Är ôçò Förresten, jag måste inkludera skick medan loop:

while (feof (stream) \u003d\u003d 0)

En fråga till er: i stället för att använda kommandoraden args och C-biblioteket FNS kan vi kontrollera detta genom att ha programmet absoluta system samtal ..

Tack på förhand
Ramkrix
  #4 (permalänk)  
Old 03-07-2008
Shamrock shamrock is offline Forum Advisor  
Registered User
  
 

Join Date: oktober 2007
Ort: USA
Inlägg: 753
Citat:
Ursprungligen postat av ramkrix View Post
Tack för ditt svar Shamrock ..

Är ôçò Förresten, jag måste inkludera skick medan loop:

while (feof (stream) \u003d\u003d 0)

En fråga till er: i stället för att använda kommandoraden args och C-biblioteket FNS kan vi kontrollera detta genom att ha programmet absoluta system samtal ..

Tack på förhand
Ramkrix
Du kan använda "absoluta system samtal" i stället för standard C biblioteket rutiner vilja fopen () och du kan undvika att passera ingången filename som en kommandorad argument på bekostnad av hardcoding ingången filnamn i öppna () system samtal.

Systemet samtal är bättre för behandlingen 5 byte i taget från indatafilen och tryckning femte byte till standard output. Denna metod är att föredra framför den ökar en räknare och upprepade tester om x <5 eller kontroll för EOF använder feof () standard lib funktion.


Kod:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

main(int argc, char *argv[])
{
    int fd;
    char name[5];

    fd = open("/path/to/input/file", O_RDONLY);

    while (read(fd, (void *) name, (size_t) 5) == 5)
        printf("the fifth byte is %c\n", name[4]);
}

  #5 (permalänk)  
Old 03-10-2008
ramkrix ramkrix is offline
Registered User
  
 

Join Date: Dec 2007
Ort: TamilNadu, INDIEN
Inlägg: 52
Än en gång tack för nyttig info Shamrock.

Låt mig fråga er sista fråga från ditt svar:
while (read (fd, (void *) namn, (size_t) 5) \u003d\u003d 5)

Den "(size_t) 5", vad innebär det och kommer det att göra? Bcoz jag läste från en bok som vi måste ge sizeof () operatör på slutet. Även du comaparing att värdet "\u003d\u003d 5"? Jag kunde inte förstå här.

Nedanstående är vad jag kodat i mitt program: read (fd, namn, sizeof (namn));

Var min rätt en?
  #6 (permalänk)  
Old 03-10-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2003
Ort: Florida
Inlägg: 1.941
Citat:
Nedanstående är vad jag kodat i mitt program: read (fd, namn, sizeof (namn));
Var min rätt en?
sizeof (namn) är 20 eftersom du definierat namn som en matris av 20 tecken dvs char namn [20]. Därför programmet försöker läsa 20 bytes åt gången - utan felkontroll.

Citat:
while (read (fd, (void *) namn, (size_t) 5) \u003d\u003d 5)
Här programmet försöker läsa 5 bytes och kontrollerar att den har actally läsa 5 byte. size_t definieras av ISO C för användning i företräder storlek och är mycket användbar whien nummer portabilitet mellan olika arkitekturer och programmering modeller är önskvärt. Det måste vara en unsigned integrerad typ. Normalt är det en int eller lång.
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 09:36.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0