Partage
  • Partager sur Facebook
  • Partager sur Twitter

{{ Troll }} Ecrire une partie d'un buffer avec write

Mais pas juste le début

Sujet résolu
2 janvier 2009 à 15:01:13

Slt, je reçois dans ma fonction une char* buff. je voudrais l'écrire dans un fichier avec write mais d'une manière un peu "éparpillée" dont il est inutile de savoir la raison ici. Donc par exemple je voudrais écrire les 410 premiers caractères puis à un autre endroit les 10 suivants puis plus loin encore les 10 suivants, etc... Pour cela, nous avons la possibilité de préciser à write combien on en écrit mais pas à partir de combien je commence à lire...

Voici ce que j'ai essayé de faire : :

void test(const char *buff, int Count)
{
	write(Fd, buff, 2);
		
	buff += 2;
		
	write(Fd, &buff, Count-2);
} //test()


mais ça ne marche pas...

Pourquoi? Si on incrément le compteur de 2 ça ne devrait pas marcher?

Si non, comment faire autrement?

Merci d'avance!

P.S : Je suis très mauvais en C, mon truc c'est le C++ et je craque avec tous ces pointeurs de caractères du C... Merci d'avance!
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2009 à 15:16:59

pourquoi avoir passe l'adresse du pointeur dans le deuxieme write ?
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2009 à 15:19:42

Oop's... Effectivement, ça marche...

Merci beaucoup !

Je l'avais passé car write demande un pointeur ! non ? Pourquoi est-ce que ça marche dans ce cas ?

Merci d'avance !
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2009 à 15:23:00

Citation : Debian

Oop's... Effectivement, ça marche...

Je l'avais passé car write demande un pointeur ! non ? Pourquoi est-ce que ça



Euh c'est l'adresse que ton pointeur contient qui t'intéresse ici, pas l'adresse du pointeur lui-même ;)
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2009 à 16:12:02

Effectivement!

Merci beaucoup!
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2009 à 16:18:52

Citation : Debian

Slt, je reçois dans ma fonction une char* buff. je voudrais l'écrire dans un fichier avec write mais d'une manière un peu "éparpillée" dont il est inutile de savoir la raison ici. Donc par exemple je voudrais écrire les 410 premiers caractères puis à un autre endroit les 10 suivants puis plus loin encore les 10 suivants, etc... Pour cela, nous avons la possibilité de préciser à write combien on en écrit mais pas à partir de combien je commence à lire...


Utilise des fonctions standards :

#include <stdio.h>

fopen() pour ouvrir l'accès au fichier
fseek() pour te positionner
fwrite() ou fputc() pour écrire
fclose() pour fermer.

Lire la doc de chaque fonction avant de l'utiliser

http://www.opengroup.org/onlinepubs/00 [...] /stdio.h.html
etc.
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
2 janvier 2009 à 16:54:24

Mais, ce sont des fonctions standard... Et puis, c'est pour des un projet en cours et ils attendent de nous qu'on utilise ce qu'ils nous ont appris... Donc open, read, write, lseek...

merci quand même du conseil!
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2009 à 17:28:05

Citation : Debian

Mais, ce sont des fonctions standard...

Pas standard C en tout cas. POSIX.1 oui.

Citation : Pas de titre

Et puis, c'est pour des un projet en cours et ils attendent de nous qu'on utilise ce qu'ils nous ont appris... Donc open, read, write, lseek...

Tu fais comme tu veux, mais si ça ne marche pas, je ne peux rien pour toi.
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
2 janvier 2009 à 18:09:57

Ben ça marche... Et puis fopen etc, il me semble que c'est du c++ et non du C! Je me trompe peut-être!
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2009 à 18:16:42

Citation : Debian

Ben ça marche... Et puis fopen etc, il me semble que c'est du c++ et non du C! Je me trompe peut-être!


Tu te trompes sûrement. C'est du C. Cependant, il est techniquement possible en C++ d'utiliser les fonctions standards du C (<cstdio>), mais on préfère utiliser les fonctions de <iostream>. Ce n'est pas le lieu pour en parler. Iml a un forum C++.


  • Partager sur Facebook
  • Partager sur Twitter
Music only !
2 janvier 2009 à 18:29:23

Effectivement, en C++ ce sont les ifstream et ostream.

Quoi qu'il en soit, on m'a appris à utiliser read, etc... on me demande de les utiliser je vais pas chercher plus loin ! D'autant plus que je ne vois pas en quoi elles sont plus pratiques ou plus performantes et qu'on parle de norme POSIX, il doit bien y avoir une raison ! de plus leur man est trés bien fait !

Merci quand même !
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2009 à 18:35:12

Citation : Debian

Quoi qu'il en soit, on m'a appris à utiliser read, etc... on me demande de les utiliser je vais pas chercher plus loin ! D'autant plus que je ne vois pas en quoi elles sont plus pratiques ou plus performantes et qu'on parle de norme POSIX, il doit bien y avoir une raison ! de plus leur man est trés bien fait !

Merci quand même !


Le problème de ces fonctions est que Windows n'étant pas compatible POSIX.1 à 100%, elles ne sont pas disponibles nativement dans la bibliothèque du C fournie par Microsoft. Certaines implémentation comme MinGW ont ajouté une sur-couche aux fonctions système de Windows pour simuler les fonctions POSIX.1, mais ça reste du gros bricolage pas optimisé... (mais au moins, ça compile et ça fait le boulot). Rien de tel sur Visual C++.

Idem sur les autres plateformes non POSIX.1. (Pas de open(), read() en C embarqué...)
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
2 janvier 2009 à 18:50:01

Merci, tout celà, je ne le savais pas!

Mais bon, en même temps compiler pour windows... :p

Mieux vaut utiliser ifstream, etc...
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2009 à 19:03:55

Citation : Debian

Mais bon, en même temps compiler pour windows...


Et bien quoi ? Tu crois que les programmes pour Windows tombent du ciel ? Tu crois qu'il n'y a pas de programmes sous Windows ? Tu crois que personne ne développe sous Windows ? C'est quoi le problème avec Windows ?

Citation : Pas de titre

Mieux vaut utiliser ifstream, etc...

pas en C en tout cas...
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
2 janvier 2009 à 21:15:52

Pas en C effectivement!

J'ai pas dit que les programmes de windows tombaient du ciel... Pour moi windows n'est pas un système de référence... A chacun son avis dessus!
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2009 à 23:39:24

Citation : Debian

Pas en C effectivement!

J'ai pas dit que les programmes de windows tombaient du ciel... Pour moi windows n'est pas un système de référence... A chacun son avis dessus!


Qu'est-ce qu'un système de référence ? A quoi ça sert ?

  • Partager sur Facebook
  • Partager sur Twitter
Music only !
3 janvier 2009 à 0:02:27

Avoir un système d'exploitation qui fonctionne, à quoi ça sert ?

Je ne crois pas qu'il soit utile de répondre à ce genre de questions ! ;)
  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2009 à 0:07:59

Citation : Debian

Avoir un système d'exploitation qui fonctionne, à quoi ça sert ?


Windows XP SP3 et Vista SP1 (32-bit) fonctionnent chez moi et des millions de gens à travers le monde. Quels genre de problèmes as-tu rencontré avec ? Quelle version ? Quelles mises à jours ?

Citation : Pas de titre


Je ne crois pas qu'il soit utile de répondre à ce genre de questions ! ;)


Tu as l'air de dire que Windows ne fonctionne pas. Je veux bien, mais donne des exemples.
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
3 janvier 2009 à 11:16:26

Je suis sur le deuxième ordinateur qui a fini sa vie sur windows et qui REmarche parfaitement en étant sous linux... et puis rapport qualité/prix, le choix n'est pas comparable entre l'un et l'autre, personne ne pourra le contester !

Et puis, autant XP à la limite passe mais vista... C'est un scandale niveau rame, plantage et j'en passe ! Et là, c'est pas sur une machine seulement que je porte mon jugement ! J'ai un pote qui a acheté en juin dernier un ordinateur à 1500€, double carte graphique, 4 Go de ram, etc... et qui a vu son pc ramer à un point sur un logiciel de 3D... Il etait un peu plus rapide que mon ordi que j'ai acheté il y a 3 ans et demi et que j'avais payé moins de la moitiée du prix... Et pareil pour un autre, sur le même logiciel (blender), selon les boutons sur lesquels il cliquait, le preogramme ne réponds plus, etc, etc... Enfin, Windows est un système d'exploitations pour des utilisateurs simples (jeux-vidéos, traitement de texte, internet, msn...) Mais quand il s'agit de travailler, mon choix est tout de suite différent. Aprés, il faut pas croire que mon jugement est gratuit car c'est Microsoft ! C'est faux ! Autant windows n'est pas digne de quoi que ce soit mais par contre leur suite office est magnifique et vraiment trés performante ! Et openOffice est loin de rivaliser !

Bien que j'admette qu'il y ait des avantages entre windows et linux c'est qu'il y a beaucoup moins de problèmes dès qu'on veut installer un truc ! Mais ceci est seulement dû au fait qu'il ait le monopole mais pas forcément la qualité ! Le jour où il y aura autant d'utilisateurs de linux que d'utilisateurs de windows et mac, le contexte changera et les choses parleront d'elles-même !

Dernière chose ! Ils parlent de windows 7 qui serait plus performant pour moins de ressources et bugs... J'espère que cette fois ils disent vrai ! L'avenir nous le dira !
  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2009 à 12:09:03

Citation : Debian

Je suis sur le deuxième ordinateur qui a fini sa vie sur windows et qui REmarche parfaitement en étant sous linux...

Et tu as une explication rationnelle à fournir ? Qu'appelle-tu 'finir sa vie' ? Le système n'a rien à voir avec l'usure des composants de l'ordinateur. Tout ce qui peut arriver, c'est un disque dur saturé. J'ai un peu du mal à te suivre là...

Citation : Pas de titre

et puis rapport qualité/prix, le choix n'est pas comparable entre l'un et l'autre, personne ne pourra le contester !


C'est sur que prix étant de 0, le rapport qualité/prix est infini, quelle que soit la qualité. C'est incontestable. Et ça prouve quoi ? Avec quel outil mesure-tu la qualité d'un logiciel ?

Citation : Pas de titre

Et puis, autant XP à la limite passe mais vista... C'est un scandale niveau rame, plantage et j'en passe !


Vista demande des ressources, c'est incontestable. Plus qu'on config Linux client sous Gnome ou KDE ? Faut voir...

Plantage ? Il arrive parfois que explorer (le navigateur interne, pas IE que je n'utilise pas) plante et redémarre tout seul. Sinon, pour le reste

- Firefox
- OpenOffice
- Code::Blocks
- Audacity
- UltraEdit
- Filezilla
- Wireshark
- FreeMind
- Windows Media Player 11 (une de mes rares concessions à Microsoft)

et un tas de petits logiciels spécialisés peu connus, jamais eu de plantages, pas de problèmes de rapidité. Par contre je n'utilise pas les outils Microsoft. Je ne connais pas. Donc si le système était fragile, je le verrais tout de suite.

Citation : Pas de titre


Et là, c'est pas sur une machine seulement que je porte mon jugement ! J'ai un pote qui a acheté en juin dernier un ordinateur à 1500€, double carte graphique, 4 Go de ram, etc... et qui a vu son pc ramer à un point sur un logiciel de 3D...


C'est possible, je n'utilise pas ces application 3D.

Citation : Pas de titre


Il etait un peu plus rapide que mon ordi que j'ai acheté il y a 3 ans et demi et que j'avais payé moins de la moitiée du prix... Et pareil pour un autre, sur le même logiciel (blender), selon les boutons sur lesquels il cliquait, le preogramme ne réponds plus, etc, etc...


La version de Vista était-elle à jour ?
La version du logiciel (Blender) était elle bien une version pour Vista ?

Citation : Pas de titre

Enfin, Windows est un système d'exploitations pour des utilisateurs simples (jeux-vidéos, traitement de texte, internet, msn...) Mais quand il s'agit de travailler, mon choix est tout de suite différent.

Qu'appelle tu 'travailler' ? C'est vague.

J'ai travaillé au développement d'applications embarquées pendant 17 ans. J'ai connu MS-DOS, Windows 2, 3, 98, XP. Il y a toujours quelques problèmes avec les premières version, mais ça se stabilise au bout de quelques mois. Lorsqu'une nouvelle version sort, il est urgent d'attendre au moins la première version corrigée... Évidemment, si on se précipite on essuie les plâtres et on dit Windows çaÿ mal... On a le droit de réfuter la logique économique qui veut qu'on sorte un produit non terminé, mais une fois qu'on le sait, il suffit d'adapter son comportement et tout rentre dans l'ordre. Je n'ai pas installé Vista avant que la SP1 ne soit sortie.

Citation : Pas de titre

Aprés, il faut pas croire que mon jugement est gratuit car c'est Microsoft ! C'est faux ! Autant windows n'est pas digne de quoi que ce soit mais par contre leur suite office est magnifique et vraiment trés performante

Connait pas

Citation : Pas de titre

Et openOffice est loin de rivaliser !

Bah, ça me suffit... Je préfère avoir moins de fonctions mais qu'elles fassent le boulot correctement.

Citation : Pas de titre

Bien que j'admette qu'il y ait des avantages entre windows et linux c'est qu'il y a beaucoup moins de problèmes dès qu'on veut installer un truc ! Mais ceci est seulement dû au fait qu'il ait le monopole mais pas forcément la qualité !

C'est dû au fait que le système est maitrisé et qu'il n'y a pas 30.000 distributions...

Citation : Pas de titre

Le jour où il y aura autant d'utilisateurs de linux que d'utilisateurs de windows et mac, le contexte changera et les choses parleront d'elles-même !

Oui, j'entends ça depuis 15 ans... Le Grand Soir va arriver... on attend toujours.

Linux est un bon système, personne ne le conteste. Il a une version du noyau bien définie, bien verrouillée. Pas de problèmes avec ça. Mais ce n'est qu'un système. Pour le faire vivre il faut une multitude d'applications autour.

C'est là que les ennuis commencent. Pour répondre à cette problématique, comme il n'y a pas de distributeur officiel de Linux, chacun y va de sa distribution plus ou moins originale, plus ou moins roots, et là, c'est la jungle la plus totale, les packages d'installation ne sont pas compatibles entre eux, bref, c'est l'anarchie et le et le débutant est complètement déboussolé.

Alors certes, c'est gratuit (ou pas cher). Mais pour quel résultat en définitive ? Tant qu'il n'y aura pas une distributions claire :

- client familial
- client pro
- serveur pro

Linux ne parviendra jamais à s'imposer, à mon grand regret, car dès le début, j'ai cru en ce système, surtout à une époque où Windows était assez fragile, il faut bien le reconnaitre (mais ce n'est plus le cas). Et c'est pas de la faute du système qui est bon, mais de l'incessante guerre de chapelle autour des distributions.

On en vient à un paradoxe , c'est qu'il existe maintenant des distributions de Linux professionnelles payantes, beaucoup plus chères que la plus chère des version de Windows... (En Linux embarqué, notamment...)

Citation : Pas de titre

Dernière chose ! Ils parlent de windows 7 qui serait plus performant pour moins de ressources et bugs... J'espère que cette fois ils disent vrai ! L'avenir nous le dira !

Oui, peut être, à condition de ne pas se jeter sur la première version...
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
3 janvier 2009 à 14:11:45

Ubuntu est simple d'utilisation et convivial... Et la "part de marché" de linux est de plus en plus importante... Et je pense qu'un jour, ce sera ou linux qui obtiendra le marché ou alors windows deviendra gratuit... Je savais que certaines distributions étaient payantes mais pas à ce point... Bien que je ne le conteste pas ! Ça m'étonne seulement.

Ubuntu demande 300Mo de RAM alors que vista minimum 700... Plus du double ! Et ils osent le vendre sur des ordis ne possédant que 1Go de RAM, ils n'ont vraiment honte de rien !

la suite office de Microsoft est très puissante et fonctionne parfaitement ! Par contre, je ne penses vraiment pas que Windows media player soit aussi bon que ITunes... Mais une fois de plus c'est mon point de vue.

Pour tout ce qui est logiciel de 3D, il vaut largement mieux aller sous linux ! Ça, nous l'avons testé ! Xp plante, vista rame ET plante... A propos de windows, il y a aussi une chose qu'ils ont pas comprise totalement au niveau de la rétro-compatibilité, dommage ! La version de blender était la bonne !

Dernier point, je trouve que cette "guerre de chapelle" des distribs de linux est plutôt une de ses forces. Chacun peut trouver son système ! Un acharné de la sécurité préférera gentoo alors qu'un utilisateur lambda (ou habitué à windows) préférera ubuntu, Kubuntu ou Xubuntu ! Pour ceux qui veulent de la stabilité, une debian, etc...

De plus comme vous l'avez dit, Microsoft dépose des versions non stable... Avec le prix qu'ils font payer, je trouve ça assez scandaleux... Encore, si ce n'était qu'une histoire de prix... Ils ont le monopole et en profitent ! Tout ceci commence à bouger, linux devient de plus en plus convivial, bien que loin derrière vista ! Mais bon, c'est certes trés agréable tous ces effets, etc... Mais est-ce vraiment utile ? Surtout quand on s'arrache les cheveux sur une scène en 3D ! Et que dès qu'on demande à windows de faire un petit truc en plus, il trouve ça trop dur et nous sort "le programme ne réponds pas" Une façon facile d'y remédier est de sauvegarder régulièrement ! Mais quand le fichier pèse plus de 150Mo, le temps de sauvegarde est qualifié de long et le temps perdu important ! Alors qu'avec linux, on lui demande un truc trop dur, il va mettre le temps mais il le fera et ne perdra rien ! (des fois il faut s'armer de patience, certes mais bon...)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
3 janvier 2009 à 14:12:19

Le message qui suit est une réponse automatique activée par un modérateur.
Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


Un troll a été détecté


Bonjour,

En vous inscrivant sur ce site, vous avez accepté de ne pas nourrir les sujets à polémique (art.8 du règlement) et, à ne pas flooder (art.9 du règlement).

Nous avons détecté une infraction au règlement en question dans ce sujet. Un troll a été lancé, c'est-à-dire un sujet à polémique qui tourne au débat sans fin. Ces sujets n'apportent rien de bon et nous ne voulons pas en voir sur le Site du Zér0.

Si vous ne savez pas ce qu'est un Troll, nous vous invitons à lire cet article de Wikipédia.

Les personnes responsables du Troll ont été sanctionnées.
Attention : au bout de plusieurs avertissements, le conseil des modérateurs peut se réunir et décider de bannir les personnes en question. Bien sûr, cela n'arrive qu'aux récidivistes, nous laissons toujours une première chance.


L'équipe de modération vous demande de relire le règlement afin d'éviter problèmes de ce genre à l'avenir.
Merci de votre compréhension :)
Les modérateurs.
  • Partager sur Facebook
  • Partager sur Twitter