aide à propos strstr - C - Programmation
Marsh Posté le 19-10-2005 à 10:58:04
Est-ce que ca peut être du au fait que le fichier string.h est defaillant ?
Marsh Posté le 19-10-2005 à 12:16:07
string.h défaillant ?
Sinon il se passe quoi dans ton programme si l'un des deux fopen() échoue ?
Réponse : fgets() ou fputs() retournent NULL et il ne se passe rien, mais comme tu ne testes pas l'erreur, tu ne le sais pas.
En plus pour peu que les lignes de ton fichier fassent plus de 200 caractères, fgets() lira ta ligne par morceaux. Ca fausse ton algorithme.
Marsh Posté le 19-10-2005 à 12:27:41
bin si t'as pas de bol ton pattern tombe a la jonction de tes deux fgets et zou
Marsh Posté le 19-10-2005 à 12:42:49
Je ne pense pas que mes deux fopen échoue car :
1- dans tous les cas mon fichier ftp_1.txt est créé
2- j'ai fait des tests pour que soit écrit des lignes de Filename dans ftp_1.txt et en effet il m'écrit des lignes de Filename dans ftp_1.ftp
Concernant les 200 caractères je suis sur que ce n'est pas le cas d'erreur => aucune ligne ne dépasse 200 caractères ...
Je n'arrive pas à entrer dans la boucle if alors que je devrais, il y a un problème au niveau du strstr, c'est pour ca que je me disais soit :
1- le string.h est défaillant
2- je ne suis pas sur que stringbuf soit un char*
car je lis : char *strstr(const char *s1, const char *s2)
Marsh Posté le 19-10-2005 à 13:12:01
il se peut que :
1 - tu utilises mal les fonctions
2 - tu ne lises pas complètement les réponses qu'on te donne
Marsh Posté le 19-10-2005 à 13:13:31
mirascheat a écrit : 1- le string.h est défaillant |
Tu es au courant qu'il n'y a pas d'implémentation dans un fichier en-tête ?
Marsh Posté le 19-10-2005 à 14:03:53
Elmoricq a écrit : Tu es au courant qu'il n'y a pas d'implémentation dans un fichier en-tête ? |
non je ne le savais pas ... mais maintenant oui
Marsh Posté le 19-10-2005 à 14:05:12
theshockwave a écrit : il se peut que : |
1- ca c'est sur sinon je ne serai pas là ...
2- je lis mais je dois etre aveugle ...
Marsh Posté le 19-10-2005 à 14:37:55
mirascheat a écrit : 1- ca c'est sur sinon je ne serai pas là ... |
Avec ce fichier de données :
|
Ce code:
|
donne ceci:
|
Alors c'est quoi le problème ?
Si tu ne sais pas décrire le comportement attendu, donne au moins un exemple de fichier d'entrée et un exemple de fichier de sortie.
Marsh Posté le 02-11-2005 à 11:15:46
J'ai essayé de réiterer l'opération pour avoir dans chaque fichier ftp_X.txt une session ftp malheureusement ca ne marche que pour la 1ère session ...
Code :
|
Marsh Posté le 02-11-2005 à 11:47:16
Le test "if (fichier2 == NULL)" ne se déclenchera qu'une seule fois dans ton code, puisqu'il n'est plus NULL après le premier fopen() réussi.
Juste après ton "fclose(fichier2)", tu devrais mettre ce dernier à NULL pour pouvoir redéclencher le test.
Et ajouter un test d'erreur à fopen() ad hoc pour fichier2.
Question : es-tu sûr de vouloir ouvrir tes fichiers en mode append ? J'ai l'impression -sans connaître la finalité de ton programme- que le mode write ("w" ) serait plus approprié.
Marsh Posté le 02-11-2005 à 12:06:46
Elmoricq a écrit : Le test "if (fichier2 == NULL)" ne se déclenchera qu'une seule fois dans ton code, puisqu'il n'est plus NULL après le premier fopen() réussi. |
J'ai fait ceci mais ca n'a rien changé :
Code :
|
Elmoricq a écrit : Et ajouter un test d'erreur à fopen() ad hoc pour fichier2. |
Je ne vois pas de quoi tu veux parler ...
Elmoricq a écrit : Question : es-tu sûr de vouloir ouvrir tes fichiers en mode append ? J'ai l'impression -sans connaître la finalité de ton programme- que le mode write ("w" ) serait plus approprié. |
Je suppose que tu as raison mais qu'est ce que ca change vraiment ? (je suis toujours ouvert pour en apprendre plus)
Merci
Marsh Posté le 02-11-2005 à 12:28:56
mirascheat a écrit : J'ai fait ceci mais ca n'a rien changé : |
"fichier2 == NULL" ?!
Citation : Je ne vois pas de quoi tu veux parler ... |
Si ton programme ne parvient pas à créer de nouveau fichier, pour une raison ou pour une autre (filesystem plein, droits insuffisants ou autre), ton programme continuera à lire ton premier fichier et ne fera rien, sans qu'aucune erreur ne soit détectée.
C'est génant je pense.
Citation : Je suppose que tu as raison mais qu'est ce que ca change vraiment ? (je suis toujours ouvert pour en apprendre plus) |
Ca change que si le fichier existe déjà, avec "w" il sera écrasé, alors qu'avec "a" tu écris à la suite de ce qui existe déjà.
Marsh Posté le 02-11-2005 à 13:03:18
1- Je ne vois vraiment pas comment reaffecter à mon fopen la valeur NULL
2- Je le fais ce test, non ?
Code :
|
3- C'est bien ce que je pensais mais je préfère ne rien écraser ...
Merci
Marsh Posté le 02-11-2005 à 13:05:47
mirascheat a écrit : 1- Je ne vois vraiment pas comment reaffecter à mon fopen la valeur NULL |
T'as pas l'impression d'avoir un "=" en trop ?
Marsh Posté le 18-10-2005 à 17:24:00
Bonjour,
Je voudrais "splitter" un fichier en fonction d'un pattern.
Ainsi je lis un fichier1 ligne par ligne, si je ne trouve pas mon pattern dans ma ligne je copie la ligne dans fichier2 et ainsi de suite jusqu'à l'obtention de mon pattern.
Mais rien ne s'écrit dans mon fichier2 ... quelqu'un pour m'aider ...merci