![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
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 |
|
||||
|
Citat:
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. |
|
||||
|
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 |
|
||||
|
Citat:
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]);
}
|
|
||||
|
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? ![]() |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|