![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| Di programmazione ad alto livello Pubblica domande su C, C + +, Java, SQL, e di altri linguaggi di programmazione qui. |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| controllo per i non-valore zero | philplasma | UNIX for Dummies Domande & Risposte | 6 | 01-08-2008 04:51 PM |
| controllo uid | filthymonk | Shell scripting e di programmazione | 7 | 07-19-2007 11:40 PM |
| Verifica dei progressi cp | MarGur | UNIX for Dummies Domande & Risposte | 0 | 05-15-2007 05:13 PM |
| Controllo di PXE | maestro @ Altiris | SUN Solaris | 5 | 05-25-2004 01:06 AM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
Salve,
Sono praticare esercizio programmi con chiamate di sistema. Esercizio Domanda: scrivere una pogram di accettare il nome di un file da parte degli utenti. Il programma deve scrivere ecery quinto byte del file di output standard. Il mio programma: # 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, nome [20]; scanf ( "% s", nome); fd \u003d open (nome, O_RDONLY, 0755); printf ( "fd è% d", fd); if (fd \u003d\u003d- 1) ( printf ( "Errore"); exit (1); ) while (x <5) ( move_offset \u003d move_offset + first_offset; lseek (fd, move_offset-1, 0); read (fd, nome, sizeof (nome)); scrivere (1, nome, 1); x + +; ) ) Uscita: [ramki @ lindesk3 sysint_ex] $ cc ex1.c-o ex1 [ramki @ lindesk3 sysint_ex] $ ./ex1 . / prova FIVEfd è di 3 Il file "Test" di contenuti: abcdFfghiIklmnVpqrsE Ora la mia domanda: 1. nel programma, io ho usato un ciclo while con un varaible "X" e il confronto non è casuale per la mia scelta di 5. Invece voglio verificare la condizione EOF nella whilepart. Come controllare che. Se si sta usando il file puntatore e fopen fn, possiamo usare while (feof (fp) \u003d\u003d 0). Ma qui abbiamo utilizzato syatem chiede e io non sappiamo come controllare la condizione qui. 2. In te l'output del programma, ho trovato "CINQUE" prima di stampare il numero filedescriptor. Ma, come per il mio programma di flusso, fd deve essere stampato e poi la prima uscita "cinque". 3.Is ci sono othet modo di scrivere il programma più semplice e preciso, in particolare utilizzando piointer per ottenere il nome del file, instaed di utilizzare Array. Please Help ... Grazie, Ramkrix |
|
||||
|
Citazione:
Codice:
#include <stdio.h>
main(int argc, char *argv[])
{
char *infile;
FILE *stream;
infile = argv[1];
stream = fopen(infile, "r");
}
... ora è possibile utilizzare le funzioni di flusso di stato come feof o ferror. |
|
||||
|
Grazie per la risposta trifoglio ..
Tis è il modo, ho bisogno di comprendere la condizione di cui ciclo while: while (feof (stream) \u003d\u003d 0) Una domanda a voi: invece di utilizzare la riga di comando args e libreria C FNS possiamo controllare ciò che hanno il programma assoluta le chiamate di sistema .. Grazie in anticipo, Ramkrix |
|
||||
|
Citazione:
La chiamata di sistema è meglio per la lettura di 5 byte alla volta dal file di input e la stampa del quinto byte per lo standard output. Questo metodo è preferibile rispetto crescente e ripetutamente un contatore di test se x <5 o di controllo per EOF utilizzando il feof () funzione standard lib. Codice:
#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]);
}
|
|
||||
|
Ancora una volta grazie per le informazioni utili Shamrock.
vorrei chiedere l'ultima questione dalla sua risposta: while (read (fd, (void *) nome, (size_t) 5) \u003d\u003d 5) Il "(size_t) 5", che cosa significa e che fare? Bcoz ho letto da un libro che abbiamo bisogno di dare il sizeof () operatore alla fine. Inoltre vi sono comaparing al valore "\u003d\u003d 5"? Non ho potuto capire qui. L'uno è al di sotto quello che ho codificato nel mio programma: read (fd, nome, sizeof (nome)); È stato il mio diritto uno? ![]() |
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|