The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > Højtstående Programmering
.
google unix.com



Højtstående Programmering Post spørgsmål om C, C + +, Java, SQL, og andre programmerings sprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
kontrol for ikke-nul værdi philplasma UNIX for dummyer Spørgsmål & svar 6 01-08-2008 04:51 PM
kontrol uid filthymonk Shell Programmering og Scripting 7 07-19-2007 11:40 PM
Kontrol cp fremskridt MarGur UNIX for dummyer Spørgsmål & svar 0 05-15-2007 05:13 PM
Kontrol for PXE maestro @ Altiris Sun Solaris 5 05-25-2004 01:06 AM

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øg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 03-06-2008
ramkrix ramkrix is offline
Registreret Bruger
  
 

Join Date: Dec 2007
Beliggenhed: TamilNadu, INDIEN
Stillinger: 52
Exclamation EOF kontrollere nedenfor

Hej,

Jeg er praktiserende udøve programmer med System opkald.

Øvelse Spørgsmål: skrive et pogram til at acceptere et filnavn fra brugeren. Programmet bør skrive ecery femte byte af filen til standard output.

Mit Program:

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

vigtigste ()
(
int fd, first_offset \u003d 5, move_offset \u003d 0, x \u003d 1;
CHAR en, navn [20];
scanf ( "% s", navn);

fd \u003d åben (navn, O_RDONLY, 0755);
printf ( "fd er% 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);
læse (fd, navn, sizeof (navn));
skrive (1, navn, 1);
x + +;
)
)


Output:
[ramki @ lindesk3 sysint_ex] $ cc ex1.c-o ex1
[ramki @ lindesk3 sysint_ex] $ ./ex1
. / test
FIVEfd er 3

Filen "Test" indhold:
abcdFfghiIklmnVpqrsE



Mit spørgsmål er nu:
1. i det program, jeg brugte en Mens loop med en varaible "X" og sammenligne den til tilfældige ingen af mine valg 5. I stedet vil jeg gerne tjekke EOF betingelse i whilepart. Sådan kontrolleres det.
Hvis vi bruger filen pointer og fopen fn, vi kan bruge, mens (feof (FP) \u003d\u003d 0). Men her brugte vi syatem opkald og jeg ikke ved, hvordan man tjekke betingelse her.

2. I te program output, konstaterede jeg, "fem" før trykning af filedescriptor nummer. Men som pr mit program flow, fd bør trykkes først og derefter output "fem".

3.Is der nogen othet måde at skrive det program mere enkle og præcise, især ved hjælp piointer for at få navnet på den fil, instaed for at bruge Array.

Please help ...

Tak,
Ramkrix
  #2 (permalink)  
Old 03-06-2008
Shamrock shamrock is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: oktober 2007
Beliggenhed: USA
Posts: 753
Citat:
Oprindeligt Indsendt af ramkrix View Post

Mit spørgsmål er nu:
1. i det program, jeg brugte en Mens loop med en varaible "X" og sammenligne den til tilfældige ingen af mine valg 5. I stedet vil jeg gerne tjekke EOF betingelse i whilepart. Sådan kontrolleres det.
Hvis vi bruger filen pointer og fopen fn, vi kan bruge, mens (feof (FP) \u003d\u003d 0). Men her brugte vi syatem opkald og jeg ikke ved, hvordan man tjekke betingelse her.

2. I te program output, konstaterede jeg, "fem" før trykning af filedescriptor nummer. Men som pr mit program flow, fd bør trykkes først og derefter output "fem".

3.Is der nogen othet måde at skrive det program mere enkle og præcise, især ved hjælp piointer for at få navnet på den fil, instaed for at bruge Array.

Please help ...

Tak,
Ramkrix


Code:
#include <stdio.h>

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

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

... nu kan du bruge strøm status funktioner gerne feof eller ferror.
  #3 (permalink)  
Old 03-07-2008
ramkrix ramkrix is offline
Registreret Bruger
  
 

Join Date: Dec 2007
Beliggenhed: TamilNadu, INDIEN
Stillinger: 52
Red face

Tak for dit svar Shamrock ..

Er tis den måde, jeg er nødt til at omfatte den stand, mens loop:

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

Endnu et spørgsmål til dig: i stedet for at bruge kommandolinjen args og C bibliotek fns kan vi kontrollere dette ved at have programmet absolutte system opkald ..

Thanks in advance,
Ramkrix
  #4 (permalink)  
Old 03-07-2008
Shamrock shamrock is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: oktober 2007
Beliggenhed: USA
Posts: 753
Citat:
Oprindeligt Indsendt af ramkrix View Post
Tak for dit svar Shamrock ..

Er tis den måde, jeg er nødt til at omfatte den stand, mens loop:

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

Endnu et spørgsmål til dig: i stedet for at bruge kommandolinjen args og C bibliotek fns kan vi kontrollere dette ved at have programmet absolutte system opkald ..

Thanks in advance,
Ramkrix
Du kan bruge "absolut system opkald" i stedet for standard C biblioteket rutiner gerne fopen (), og du kan undgå at passere input filnavn som en kommandolinje argument på bekostning af hardcoding input filnavn i det åbne () system call.

Systemet kalder tilgang er bedre til at læse 5 bytes på et tidspunkt fra input filen og trykning femte byte til standard output. Denne metode er foretrukket frem for øger en tæller og gentagne forsøg hvis x <5 eller kontrollering for EOF bruger feof () standard lib funktion.


Code:
#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 (permalink)  
Old 03-10-2008
ramkrix ramkrix is offline
Registreret Bruger
  
 

Join Date: Dec 2007
Beliggenhed: TamilNadu, INDIEN
Stillinger: 52
Endnu en gang tak for den nyttige info Shamrock.

Lad mig spørge dig det sidste spørgsmål fra dine svar:
mens (read (fd, (void *) navn, (size_t) 5) \u003d\u003d 5)

Den "(size_t) 5", hvad betyder det og vil det gøre? Bcoz Jeg læste i en bog, at vi er nødt til at give sizeof () operatøren ved udgangen. Også du er comaparing det til værdi "\u003d\u003d 5"? Jeg kunne ikke forstå her.

Nedenstående er hvad jeg kodet i mit program: læse (fd, navn, sizeof (navn));

Blev minen ret en?
  #6 (permalink)  
Old 03-10-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2003
Beliggenhed: Florida
Stillinger: 1945
Citat:
Nedenstående er hvad jeg kodet i mit program: read (fd, navn, sizeof (navn));
Blev minen ret en?
sizeof (navn) er 20, da du definerede navn som en vifte af 20 tegn dvs char navn [20]. Derfor dit program forsøger at læse 20 bytes på et tidspunkt - uden Fejlkontrol.

Citat:
mens (read (fd, (void *) navn, (size_t) 5) \u003d\u003d 5)
Her programmet forsøger at læse 5 bytes og kontroller, at den har actally læse 5 bytes. size_t er defineret ved ISO C til brug i repræsenterer størrelse og er meget nyttigt whien kode på tværs af forskellige arkitekturer og programmering modeller er ønskeligt. Det er påkrævet for at være en usigneret integrerende type. Typisk er det en int eller lang.
Closed Thread

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 08:24 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0