Bonjour,
Je voudrais bien ecrire un programme en C en utilisant les appels systeme Linux qui permet de créer un fichier (avec extension que je choisit moi-meme) et d'écrire dedans.
Y'a t-il quelqu'un qui peut m'aider sur ça?
Merci d'avance.
Bonjour,
Je voudrais bien ecrire un programme en C en utilisant les appels systeme Linux qui permet de créer un fichier (avec extension que je choisit moi-meme) et d'écrire dedans.
Y'a t-il quelqu'un qui peut m'aider sur ça?
Merci d'avance.
Bonjour,
Merci pour ton retour de message .
Mon problème c'est que j'ai utilisé ces fonctions pour copier un fichier mais j'arrive pas à le faire pour créer un fichier .txt contenant des infos sur un fichier en entrée ( une sorte d'archive).
Par exemple au lieu d'écrire :
pour afficher sur la console le mode d'un fichier en entrée , je veux que cette information( le mode d'un fichier en entrée) soit affichée dans le fichier qui va être crée .
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("%o",fileStat.st_mode);
Et aussi je sais pas comment faire pour que le fichier crée ait une extension .txt ou n'importe quelle extension que je choisis à l'avance.
Merci d'avance.
bon, reprenons doucement, si tu étais allé lire les liens que je t'ai donné tu aurais possiblement déjà ta réponse :
- la fonction open() sert à ouvrir ET à créer des fichiers
- la fonction read() sert à lire les octets contenus dans le fichier
- la fonction write() sert à écrire dans le fichier
- la fonction close() sert à fermer le descripteur du fichier quand on a fini de travailler avec
ces quatre fonctions correspondent aux appels systèmes basiques pour manipuler les fichiers (ce que tu souhaitais dans ton premier post donc)
printf() n'est ni un appel système ni une fonction pour écrire dans un fichier, on pourrait envisager d'utiliser fprintf() mais ce n'est pas là non plus un appel système, c'est une fonction de la libc
à moins de faire des mélanges dans ton code en mixant des fonctions de la libc (comme sprintf() par exemple) et les appels systèmes (en l'occurrence write()) tu n'as pas moyen d'écrire dans un fichier à l'aide d'une chaine de formatage (le fameux "%o\n"), c'est une facilité fournie par la libc ! tu seras donc obligé d'écrire ton nombre octal par d'autres moyens, en créant une fonction pour convertir explicitement ton nombre en une chaine de caractères qui le représente (char * convertirOctal(int num) ?)
enfin acté qu'ici il s'agit plus d'un problème de compréhension du langage que réellement d'une problématique liée à la programmation système, je t'invites à poster dans la section Langage C / Débutant comme pour ton autre discussion la prochaine fois (c'est un détail)
Je crois qu'à la fin de vais faire un mélange entre des fonctions dela libc et les appels systemes comme vous me l'avez conseillé ... mais le probleme c'est que lors de l'ecriture dans le fichier crée j'arrive à écrire le contenu du fichier du depart (le texte qu'il contient),mais ce que je veux c'est que le fichier crée contient ,à part le contenu du fichier du depart, des infos sur ce fichier( de depart) exemple si je fais ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 struct stat fileStat; if(stat(source_name,&fileStat) < 0){ perror("error opening the file"); return 1; } int is_directory = 0; int is_symlink = 0; // Show the type of file switch (fileStat.st_mode & S_IFMT) { case S_IFBLK: printf("block device\n"); break; case S_IFCHR: printf("character device\n"); break; case S_IFDIR: printf("d\t"); is_directory = 1; break; case S_IFIFO: printf("FIFO/pipe\n"); break; case S_IFLNK: printf("l\t"); is_symlink = 1; break; case S_IFREG: printf("f\n"); break; case S_IFREG: printf("f"); break; case S_IFSOCK: printf("socket\n"); break; default: printf("unknown?\n"); break; }
ce code m'affiche le type du fichier .Je veux que le resultat s'affiche dans le fichier crée au debut au lieu que ça soit sur la console .
Partager