The UNIX and Linux Forums  
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > High Level Programming
.
google unix.com



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

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 Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 03-06-2008
ramkrix ramkrix is offline
Registered User
  
 

Join Date: Dec 2007
Lieu: Tamil Nadu, INDE
Posts: 52
Exclamation EOF vérification ci-dessous

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
  #2 (permalink)  
Old 03-06-2008
shamrock shamrock is offline Forum Advisor  
Registered User
  
 

Join Date: Oct 2007
Lieu: États-Unis
Posts: 750
Citation:
Posté par ramkrix View Post

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

Code:
#include <stdio.h>

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

    infile = argv[1];
    stream = fopen(infile, "r");
}
... maintenant vous pouvez utiliser le flux de l'état des fonctions comme feof ou ferror.
  #3 (permalink)  
Old 03-07-2008
ramkrix ramkrix is offline
Registered User
  
 

Join Date: Dec 2007
Lieu: Tamil Nadu, INDE
Posts: 52
Red face

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
  #4 (permalink)  
Old 03-07-2008
shamrock shamrock is offline Forum Advisor  
Registered User
  
 

Join Date: Oct 2007
Lieu: États-Unis
Posts: 750
Citation:
Posté par ramkrix View Post
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
Vous pouvez utiliser "absolue appels système" à la place de la bibliothèque C standard routines comme fopen () et vous pouvez éviter de passer l'entrée du fichier comme un argument de ligne de commande à la charge de hardcoding le fichier d'entrée dans le système open () appel.

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]);
}
  #5 (permalink)  
Old 03-10-2008
ramkrix ramkrix is offline
Registered User
  
 

Join Date: Dec 2007
Lieu: Tamil Nadu, INDE
Posts: 52
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?
  #6 (permalink)  
Old 03-10-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Modérateur
  
 

Join Date: Dec 2003
Lieu: Florida
Posts: 1917
Citation:
Les dessous d'un code est ce que j'ai dans mon programme: read (fd, le nom, sizeof (nom));
Une mine a été bonne?
sizeof (nom) est de 20 depuis le nom que vous avez défini une série de 20 caractères c'est-à-dire char nom [20]. Par conséquent, votre programme essaie de lire 20 octets à la fois - sans aucune vérification d'erreur.

Citation:
while (read (fd, (void *) nom, (size_t) 5) \u003d\u003d 5)
Ici, le programme essaye de lire 5 octets et des contrôles qu'elle a actally lire 5 octets. size_t est défini par l'ISO C pour une utilisation dans la représentation de l'information et de la taille est très utile whien code de portabilité entre les différentes architectures et modèles de programmation est souhaitable. Il est nécessaire d'être un type unsigned intégrante. En général, il est un int ou long.
Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 02:27 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0