![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| High Level Programmering Post spørsmål om C, C + +, Java, SQL og andre programmeringsspråk her. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| ser etter ikke er null | philplasma | UNIX for Dummies Spørsmål og svar | 6 | 01-08-2008 04:51 |
| sjekking uid | filthymonk | Shell programmering og Skripting | 7 | 07-19-2007 11:40 |
| Checking cp fremgang | MarGur | UNIX for Dummies Spørsmål og svar | 0 | 05-15-2007 05:13 |
| Checking for PXE | Maestro @ Altiris | Sun Solaris | 5 | 05-25-2004 01:06 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Hei,
Jeg praktiserer øvelsen programmer med System samtaler. Exercise Spørsmål: skrive en pogram å godta et filnavn fra brukeren. Programmet skal skrive ecery femte byte av filen til standard output. Min Program: # Include <stdio.h> # Include <fcntl.h> # Include <error.h> main () ( int fd, first_offset \u003d 5, move_offset \u003d 0, x \u003d 1; char a, navn [20]; scanf ( "% s", navn); fd \u003d open (navn, O_RDONLY, 0755); printf ( "fd er% d", fd); if (fd \u003d\u003d- 1) ( printf ( "feil"); exit (1); ) while (x <5) ( move_offset \u003d move_offset + first_offset; lseek (fd, move_offset-1, 0); read (fd, navn sizeof (navn)); skriver (1, navn, 1); x + +; ) ) Utdata: [ramki @ lindesk3 sysint_ex] $ cc ex1.c-o ex1 [ramki @ lindesk3 sysint_ex] $ ./ex1 . / test FIVEfd er 3 Filen "Test" innhold: abcdFfghiIklmnVpqrsE Spørsmålet mitt nå: 1. i programmet, jeg brukte en stund loop med en varaible "X" og sammenligne det med til tilfeldige ingen av mine valg 5. I stedet jeg ønsker å se EOF tilstand i whilepart. Slik kontrollerer det. Hvis vi bruker filen pekeren og fopen fn, kan vi bruke while (feof (fp) \u003d\u003d 0). Men vi brukte syatem samtaler og jeg vet hvordan du skal sjekke tilstanden her. 2. I te programmet utgang, fant jeg "FEM" før utskrift av filedescriptor nummer. Men pr min program flyt, fd skal skrives først og deretter utdataene "FEM". 3.Is det noen othet måte å skrive programmet mer enkle og presise, særlig ved hjelp piointer for å få navnet på filen, instaed av hjelp Array. Vennligst hjelp ... Takk, Ramkrix |
|
||||
|
Sitat:
Code:
#include <stdio.h>
main(int argc, char *argv[])
{
char *infile;
FILE *stream;
infile = argv[1];
stream = fopen(infile, "r");
}
... Nå kan du bruke strømmen status funksjoner som feof eller fError. |
|
||||
|
Takk for svar kløver ..
Er TIS Forresten, jeg må ta med tilstanden mens loop: while (feof (stream) \u003d\u003d 0) Ett spørsmål til deg: i stedet for å bruke kommandolinjen args og C biblioteket FNs kan vi sjekke dette ved å ha programmet absolutt system samtaler .. Takk på forhånd, Ramkrix |
|
||||
|
Sitat:
Systemet kaller tilnærmingen er bedre for lesing 5 byte om gangen fra inndatafilen og utskrift femte byte til standard output. Denne metoden foretrekkes over øke en teller og gjentatte ganger testing hvis x <5 eller sjekke EOF bruker feof () standard lib funksjon. 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]);
}
|
|
||||
|
Igjen takk for nyttig info Shamrock.
La meg spørre deg siste spørsmål fra ditt svar: while (read (fd, (void *) navn (size_t) 5) \u003d\u003d 5) The "(size_t) 5", hva betyr det og det? Bcoz jeg leste fra en bok som vi trenger for å gi sizeof () operatør på slutten. Også er du comaparing det til verdien "\u003d\u003d 5"? Jeg kunne ikke forstå her. Under ett er det jeg kodet i mitt program: read (fd, navn sizeof (navn)); Var min rett en? ![]() |
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|