![]() |
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| High Level Programming Posez vos questions à propos de C, C + +, Java, SQL, et d'autres langages de programmation ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| la vérification de la non-valeur égale à zéro | philplasma | UNIX pour les nuls Questions et réponses | 6 | 01-08-2008 04:51 PM |
| contrôle uid | filthymonk | De programmation et de script Shell | 7 | 07-19-2007 10:40 PM |
| Vérification cp progrès | MarGur | UNIX pour les nuls Questions et réponses | 0 | 05-15-2007 04:13 PM |
| Vérification de PXE | maestro @ Altiris | SUN Solaris | 5 | 05-25-2004 12:06 AM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
Salut,
Je suis la pratique des programmes d'exercice avec les appels système. Exercice Question: écrire une pogram à accepter un nom de fichier de l'utilisateur. Le programme doit écrire ecery cinquième octet du fichier à la sortie standard. Mon programme: # Include <stdio.h> # Include <fcntl.h> # Include <error.h> principal () ( int fd, first_offset \u003d 5, move_offset \u003d 0, x \u003d 1; char a, nom [20]; scanf ( "% s", nom); fd \u003d open (name, O_RDONLY, 0755); printf ( "fd est% d", fd); if (fd \u003d\u003d- 1) ( printf ( "erreur"); sortie (1); ) while (x <5) ( move_offset \u003d move_offset + first_offset; lseek (fd, move_offset-1, 0); read (fd, le nom, sizeof (nom)); écrire (1, nom, 1); x + +; ) ) Sortie: [ramki @ lindesk3 sysint_ex] ex1.c $ cc-o ex1 [ramki @ lindesk3 sysint_ex] $ ./ex1 . / test FIVEfd est de 3 Le fichier "Test" contenu: abcdFfghiIklmnVpqrsE Ma question maintenant: 1. dans le programme, j'ai utilisé une boucle while avec une varaible "X" et de le comparer à aucun hasard de mon choix 5. Au lieu je tiens à vérifier l'état de l'EOF whilepart. Comment faire pour vérifier cela. Si nous utilisons fopen pointeur de fichier et fn, nous pouvons utiliser while (feof (fp) \u003d\u003d 0). Mais ici, nous avons utilisé syatem demande et je ne sais comment vérifier l'état ici. 2. En te programme de sortie, j'ai trouvé "CINQ" avant l'impression du nombre filedescriptor. Mais comme pour mon programme de flux, fd doit être imprimé en premier et ensuite la sortie "CINQ". 3.Is il othet façon d'écrire le programme plus simple et précis, en particulier en utilisant piointer pour obtenir le nom du fichier, au lieu de l'utilisation de Array. Aide S'il vous plaît ... Merci, Ramkrix |
|
||||
|
Citation:
Code:
#include <stdio.h>
main(int argc, char *argv[])
{
char *infile;
FILE *stream;
infile = argv[1];
stream = fopen(infile, "r");
}
|
|
||||
|
Merci pour votre réponse shamrock ..
Tis est le chemin, j'ai besoin d'inclure la condition de boucle while: while (feof (stream) \u003d\u003d 0) Une dernière question pour vous: au lieu d'utiliser la ligne de commande et de la bibliothèque C args FNS peut-on vérifier cela en ayant le programme absolue des appels système .. Merci à l'avance, Ramkrix |
|
||||
|
Citation:
L'appel système est mieux pour la lecture 5 octets, à un moment de l'entrée de fichier et d'impression de la cinquième octet de la sortie standard. Cette méthode est préférable à un compteur s'incrémente de test et à maintes reprises si x <5 ou le contrôle de l'utilisation de EOF feof () standard lib fonction. 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]);
}
|
|
||||
|
Encore une fois merci pour l'info utile Shamrock.
permettez-moi de vous poser la dernière question de votre réponse: while (read (fd, (void *) nom, (size_t) 5) \u003d\u003d 5) La "(size_t) 5", que signifie-t-il faire? Bcoz i lire un livre que nous avons besoin de donner à l'sizeof () l'opérateur à la fin. Aussi vous êtes comaparing à la valeur "\u003d\u003d 5"? Je n'arrivais pas à comprendre ici. Les dessous d'un code est ce que j'ai dans mon programme: read (fd, le nom, sizeof (nom)); Une mine a été bonne? ![]() |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|