J'ai remarqu=E9 que votre solution marche sur des exemples et non sur
d'autres.
en cas o=F9 la solution ne me donne pas le bon r=E9sultat il y a une
exception dans l'ex=E9cution.
Lorsque je fais le d=E9boguer, j'obtiens:
Windows a d=E9clench=E9 un point d'arr=EAt dans sup_col.exe.
Cela peut =EAtre d=FB =E0 une d=E9faillance du tas qui indique un bogue dan=
s
sup_col.exe ou l'une des DLL charg=E9es.
Cela peut =E9galement =EAtre d=FB =E0 l'appui sur la touche F12 lorsque
sup_col.exe a le focus
La fen=EAtre Sortie peut contenir des informations de diagnostic
suppl=E9mentaires.
Voici le contenu de feutre de sortie:
'sup_col.exe' : Charg=E9 'C:\sup_col\Debug\sup_col.exe', Les symboles
ont =E9t=E9 charg=E9s.
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\ntdll.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\kernel32.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\WinSxS
\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-
ww_597c3456\msvcr90d.dll', Les symboles ont =E9t=E9 charg=E9s.
'sup_col.exe' : Charg=E9 'C:\Program Files\SuperCopier2\SC2Hook.dll', Le
fichier binaire n'a pas =E9t=E9 g=E9n=E9r=E9 avec les informations de d=E9b=
ogage.
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\user32.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\gdi32.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\advapi32.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\rpcrt4.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\oleaut32.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\msvcrt.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\ole32.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\imm32.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\lpk.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\usp10.dll'
HEAP[sup_col.exe]: Heap block at 00332AF0 modified at 00332CB0 past
requested size of 1b4
Windows a d=E9clench=E9 un point d'arr=EAt dans sup_col.exe.
Cela peut =EAtre d=FB =E0 une d=E9faillance du tas qui indique un bogue dan=
s
sup_col.exe ou l'une des DLL charg=E9es.
Cela peut =E9galement =EAtre d=FB =E0 l'appui sur la touche F12 lorsque
sup_col.exe a le focus
La fen=EAtre Sortie peut contenir des informations de diagnostic
suppl=E9mentaires.
HEAP[sup_col.exe]: Invalid Address specified to RtlValidateHeap
( 00330000, 00332AF8 )
Windows a d=E9clench=E9 un point d'arr=EAt dans sup_col.exe.
Cela peut =EAtre d=FB =E0 une d=E9faillance du tas qui indique un bogue dan=
s
sup_col.exe ou l'une des DLL charg=E9es.
Cela peut =E9galement =EAtre d=FB =E0 l'appui sur la touche F12 lorsque
sup_col.exe a le focus
La fen=EAtre Sortie peut contenir des informations de diagnostic
suppl=E9mentaires.
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\uxtheme.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\MSCTF.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\version.dll'
'sup_col.exe' : D=E9charg=E9 'C:\WINDOWS\system32\version.dll'
'sup_col.exe' : Charg=E9 'C:\WINDOWS\system32\MSCTFIME.IME'
Voici le lien: http://groups.google.fr/group/fr.comp.os.ms-windows.programmation/browse_ thread/thread/a253d400f7f3286a?hl=fr# J'ai remarqué que votre solution marche sur des exemples et non sur d'autres.
On ne sait pas quel code, quels exemples, etc... Et quel que soit le cas, utiliser le deboggeur de VS (F5) en faisant du pas à pas (F11, F10, ..) et visualisant les diverses variables (Watch 1, ..)
On 26 sep, 20:49, programmation <bouali.a...@gmail.com> wrote:
Voici le lien:
http://groups.google.fr/group/fr.comp.os.ms-windows.programmation/browse_ thread/thread/a253d400f7f3286a?hl=fr#
J'ai remarqué que votre solution marche sur des exemples et non sur
d'autres.
On ne sait pas quel code, quels exemples, etc...
Et quel que soit le cas, utiliser le deboggeur de VS (F5) en faisant
du pas à pas (F11, F10, ..) et visualisant les diverses variables
(Watch 1, ..)
Voici le lien: http://groups.google.fr/group/fr.comp.os.ms-windows.programmation/browse_ thread/thread/a253d400f7f3286a?hl=fr# J'ai remarqué que votre solution marche sur des exemples et non sur d'autres.
On ne sait pas quel code, quels exemples, etc... Et quel que soit le cas, utiliser le deboggeur de VS (F5) en faisant du pas à pas (F11, F10, ..) et visualisant les diverses variables (Watch 1, ..)
programmation
On 27 sep, 05:19, Christian ASTOR wrote:
On 26 sep, 20:49, programmation wrote:
> Voici le lien: >http://groups.google.fr/group/fr.comp.os.ms-windows.programmation/bro... > J'ai remarqué que votre solution marche sur des exemples et non sur > d'autres.
On ne sait pas quel code, quels exemples, etc... Et quel que soit le cas, utiliser le deboggeur de VS (F5) en faisant du pas à pas (F11, F10, ..) et visualisant les diverses variables (Watch 1, ..)
Bonjour,
Je vous remercie pour votre aide. et je n'oublierai pas jamais vos conseils et vos propositions.
Comme vous savez mon projet C contient des module. J'ai un module qui permet de faire un traitement spécial sur un fichier. Ce traitement consiste à supprimer des lignes vides et des colonnes vides de ce fichier.
J'ai un fichier texte bien formé contient deux champs: objet et attribut. tous les objets sont des entiers et tous les attributs sont de chaines de caractères de même taille. chaque ligne contient un objet et son attribut par exemple:
in.txt:
1 01011 2 01001 10 00011 4 01000 15 00000 6 00001
Je voudrais supprimer les 0 de même position dans chaque chaine de caractère. Par exemple dans notre cas, nous allons supprimer les 0 dans la position 0 de chaque chaine car dans cette position nous avons toutes les chaines sont à 0 et aussi supprimer les 0 dans la position 2 de chaque chaine car dans cette position nous avons toutes les chaines sont à 0. De plus, l faut aussi supprimer des lignes où l'objet possède un attribut vide (chaine de caractère toute à 0)
le résultat souhaité obtenu est un fichier 'out.txt' :
1 111 2 101 10 011 4 100 6 001
De plus à part ce fichier résultat, j'ai besoin de sauvegarder dans un fichier par exemple les positions 0 et 2 qui sont les positions de suppression car j'ai besoin de cette information. Dans notre cas nous obtenons le fichier 'position.txt':
Cette solution marche sur beaucoup des exemples. Mais sur l'exemple suivant l'exécution ne passe pas bien comme c'est décrite au dessus. c'est exemple de fichier 'in.txt' est : 1 01011 2 01001 3 00011 4 01000 5 00000 6 00001
le programme m'affiche sur l'écran:
1 01011 : 5 7 pos = 0 pos = 2 pos = 34
puis il stoppe l'exécution.
si vous remarquez ce programme lit la première ligne de fichier 'in.txt' 1 01011 puis il affiche 5 qui est le nombre de caractère formant la chaine "01011 " ensuite 7 pour dire le nombre des lignes de fichier or ceci n'est pas juste car on a 6 et n'est pas 7.
et par la suite le programme affichage les positions des colonnes supprimées la position 0 et 2 sont justes mais 34 est faut et je ne sais pas comment il a affiché 34.
on a seulement des colonnes à supprimées sont à la position 0 et 2 .
J'ai remarqué que ce programme marche sur des exemples et non sur autres. je ne sais pourquoi malgré tous les exemples ont le même format. Je crois que nous avons bien libérer l'espace mémoire louée .
S'il vous plait, j'ai besoin de votre aide car le reste de mon travail se base sur cette solution.
Merci.
On 27 sep, 05:19, Christian ASTOR <casto...@club-internet.fr> wrote:
On 26 sep, 20:49, programmation <bouali.a...@gmail.com> wrote:
> Voici le lien:
>http://groups.google.fr/group/fr.comp.os.ms-windows.programmation/bro...
> J'ai remarqué que votre solution marche sur des exemples et non sur
> d'autres.
On ne sait pas quel code, quels exemples, etc...
Et quel que soit le cas, utiliser le deboggeur de VS (F5) en faisant
du pas à pas (F11, F10, ..) et visualisant les diverses variables
(Watch 1, ..)
Bonjour,
Je vous remercie pour votre aide. et je n'oublierai pas jamais vos
conseils et vos propositions.
Comme vous savez mon projet C contient des module.
J'ai un module qui permet de faire un traitement spécial sur un
fichier. Ce traitement consiste à supprimer des lignes vides et des
colonnes vides de ce fichier.
J'ai un fichier texte bien formé contient deux champs: objet et
attribut.
tous les objets sont des entiers et tous les attributs sont de chaines
de caractères de même taille.
chaque ligne contient un objet et son attribut par exemple:
in.txt:
1 01011
2 01001
10 00011
4 01000
15 00000
6 00001
Je voudrais supprimer les 0 de même position dans chaque chaine de
caractère.
Par exemple dans notre cas, nous allons supprimer les 0 dans la
position 0 de chaque chaine car dans cette position nous avons toutes
les chaines sont à 0 et aussi supprimer les 0 dans la position 2 de
chaque chaine car dans cette position nous avons toutes les chaines
sont à 0.
De plus, l faut aussi supprimer des lignes où l'objet possède un
attribut vide (chaine de caractère toute à 0)
le résultat souhaité obtenu est un fichier 'out.txt' :
1 111
2 101
10 011
4 100
6 001
De plus à part ce fichier résultat, j'ai besoin de sauvegarder dans un
fichier par exemple les positions 0 et 2 qui sont les positions de
suppression car j'ai besoin de cette information.
Dans notre cas nous obtenons le fichier 'position.txt':
Cette solution marche sur beaucoup des exemples.
Mais sur l'exemple suivant l'exécution ne passe pas bien comme c'est
décrite au dessus.
c'est exemple de fichier 'in.txt' est :
1 01011
2 01001
3 00011
4 01000
5 00000
6 00001
le programme m'affiche sur l'écran:
1 01011 : 5
7
pos = 0
pos = 2
pos = 34
puis il stoppe l'exécution.
si vous remarquez ce programme lit la première ligne de fichier
'in.txt'
1 01011 puis il affiche 5 qui est le nombre de caractère formant la
chaine "01011 "
ensuite 7 pour dire le nombre des lignes de fichier or ceci n'est pas
juste car on a 6 et n'est pas 7.
et par la suite le programme affichage les positions des colonnes
supprimées
la position 0 et 2 sont justes mais 34 est faut et je ne sais pas
comment il a affiché 34.
on a seulement des colonnes à supprimées sont à la position 0 et 2 .
J'ai remarqué que ce programme marche sur des exemples et non sur
autres. je ne sais pourquoi malgré tous les exemples ont le même
format.
Je crois que nous avons bien libérer l'espace mémoire louée .
S'il vous plait, j'ai besoin de votre aide car le reste de mon travail
se base sur cette solution.
> Voici le lien: >http://groups.google.fr/group/fr.comp.os.ms-windows.programmation/bro... > J'ai remarqué que votre solution marche sur des exemples et non sur > d'autres.
On ne sait pas quel code, quels exemples, etc... Et quel que soit le cas, utiliser le deboggeur de VS (F5) en faisant du pas à pas (F11, F10, ..) et visualisant les diverses variables (Watch 1, ..)
Bonjour,
Je vous remercie pour votre aide. et je n'oublierai pas jamais vos conseils et vos propositions.
Comme vous savez mon projet C contient des module. J'ai un module qui permet de faire un traitement spécial sur un fichier. Ce traitement consiste à supprimer des lignes vides et des colonnes vides de ce fichier.
J'ai un fichier texte bien formé contient deux champs: objet et attribut. tous les objets sont des entiers et tous les attributs sont de chaines de caractères de même taille. chaque ligne contient un objet et son attribut par exemple:
in.txt:
1 01011 2 01001 10 00011 4 01000 15 00000 6 00001
Je voudrais supprimer les 0 de même position dans chaque chaine de caractère. Par exemple dans notre cas, nous allons supprimer les 0 dans la position 0 de chaque chaine car dans cette position nous avons toutes les chaines sont à 0 et aussi supprimer les 0 dans la position 2 de chaque chaine car dans cette position nous avons toutes les chaines sont à 0. De plus, l faut aussi supprimer des lignes où l'objet possède un attribut vide (chaine de caractère toute à 0)
le résultat souhaité obtenu est un fichier 'out.txt' :
1 111 2 101 10 011 4 100 6 001
De plus à part ce fichier résultat, j'ai besoin de sauvegarder dans un fichier par exemple les positions 0 et 2 qui sont les positions de suppression car j'ai besoin de cette information. Dans notre cas nous obtenons le fichier 'position.txt':
Cette solution marche sur beaucoup des exemples. Mais sur l'exemple suivant l'exécution ne passe pas bien comme c'est décrite au dessus. c'est exemple de fichier 'in.txt' est : 1 01011 2 01001 3 00011 4 01000 5 00000 6 00001
le programme m'affiche sur l'écran:
1 01011 : 5 7 pos = 0 pos = 2 pos = 34
puis il stoppe l'exécution.
si vous remarquez ce programme lit la première ligne de fichier 'in.txt' 1 01011 puis il affiche 5 qui est le nombre de caractère formant la chaine "01011 " ensuite 7 pour dire le nombre des lignes de fichier or ceci n'est pas juste car on a 6 et n'est pas 7.
et par la suite le programme affichage les positions des colonnes supprimées la position 0 et 2 sont justes mais 34 est faut et je ne sais pas comment il a affiché 34.
on a seulement des colonnes à supprimées sont à la position 0 et 2 .
J'ai remarqué que ce programme marche sur des exemples et non sur autres. je ne sais pourquoi malgré tous les exemples ont le même format. Je crois que nous avons bien libérer l'espace mémoire louée .
S'il vous plait, j'ai besoin de votre aide car le reste de mon travail se base sur cette solution.
Merci.
Christian ASTOR
On 27 sep, 09:52, programmation wrote:
S'il vous plait, j'ai besoin de votre aide car le reste de mon travail se base sur cette solution.
Mais pourquoi ne débugges-tu pas pas-à-pas ?! On ne programme jamais sans débugger ! Tu vois immédiatement l'erreur : le fichier a 2 lignes vide à la fin, d'où 7 lignes, et tu ne fermes pas sAttrib, d'où une valeur bidon pour nAttribLength...
On 27 sep, 09:52, programmation <bouali.a...@gmail.com> wrote:
S'il vous plait, j'ai besoin de votre aide car le reste de mon travail
se base sur cette solution.
Mais pourquoi ne débugges-tu pas pas-à-pas ?!
On ne programme jamais sans débugger !
Tu vois immédiatement l'erreur : le fichier a 2 lignes vide à la fin,
d'où 7 lignes, et tu ne fermes pas sAttrib, d'où une valeur bidon pour
nAttribLength...
S'il vous plait, j'ai besoin de votre aide car le reste de mon travail se base sur cette solution.
Mais pourquoi ne débugges-tu pas pas-à-pas ?! On ne programme jamais sans débugger ! Tu vois immédiatement l'erreur : le fichier a 2 lignes vide à la fin, d'où 7 lignes, et tu ne fermes pas sAttrib, d'où une valeur bidon pour nAttribLength...
programmation
> Tu vois immédiatement l'erreur : le fichier a 2 lignes vide à la fin, d'où 7 lignes,
le fichier contient 6 lignes et le curseur est à la fin de dernier ligne de fichier. Avec quel format de fichier utilisé pour le test c'est à dire le premier champ sur combien de caractère de même le deuxième champ ? Es t ce que les deux champs sont séparées par un seul espace ?
et tu ne fermes pas sAttrib, d'où une valeur bidon pour nAttribLength...
Où exactement dans le code que je dois fermer 'sAtirib' ?
Est ce que le code en dessus est complète et valable pour tous les cas c'est il n ' y pas des cas spéciales à vérifier ?
Merci.
> Tu vois immédiatement l'erreur : le fichier a 2 lignes vide à la fin,
d'où 7 lignes,
le fichier contient 6 lignes et le curseur est à la fin de dernier
ligne de fichier.
Avec quel format de fichier utilisé pour le test c'est à dire le
premier champ sur combien de caractère de même le deuxième champ ? Es t
ce que les deux champs sont séparées par un seul espace ?
et tu ne fermes pas sAttrib, d'où une valeur bidon pour
nAttribLength...
Où exactement dans le code que je dois fermer 'sAtirib' ?
Est ce que le code en dessus est complète et valable pour tous les
cas c'est il n ' y pas des cas spéciales à vérifier ?
> Tu vois immédiatement l'erreur : le fichier a 2 lignes vide à la fin, d'où 7 lignes,
le fichier contient 6 lignes et le curseur est à la fin de dernier ligne de fichier. Avec quel format de fichier utilisé pour le test c'est à dire le premier champ sur combien de caractère de même le deuxième champ ? Es t ce que les deux champs sont séparées par un seul espace ?
et tu ne fermes pas sAttrib, d'où une valeur bidon pour nAttribLength...
Où exactement dans le code que je dois fermer 'sAtirib' ?
Est ce que le code en dessus est complète et valable pour tous les cas c'est il n ' y pas des cas spéciales à vérifier ?
Merci.
Christian ASTOR
On 27 sep, 15:26, programmation wrote:
le fichier contient 6 lignes et le curseur est à la fin de dernier ligne de fichier.
S'il affiche k = 7, c'est qu'il passe 7 fois Mets un Break sur while (fgets(sLine, MAXLINE, pFile)) et tu regardes les variables (sLine notamment)
Où exactement dans le code que je dois fermer 'sAtirib' ?
Avant que nAttribLength soit renseigné forcément... Ou alors tu initialises avant ton sscanf() par memset(&dataTabString[nCpt], 0, sizeof(dataStruct)); et tu testes si sAttrib a été rempli pour calculer nAttribLength : if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
On 27 sep, 15:26, programmation <bouali.a...@gmail.com> wrote:
le fichier contient 6 lignes et le curseur est à la fin de dernier
ligne de fichier.
S'il affiche k = 7, c'est qu'il passe 7 fois
Mets un Break sur while (fgets(sLine, MAXLINE, pFile))
et tu regardes les variables (sLine notamment)
Où exactement dans le code que je dois fermer 'sAtirib' ?
Avant que nAttribLength soit renseigné forcément...
Ou alors tu initialises avant ton sscanf() par
memset(&dataTabString[nCpt], 0, sizeof(dataStruct));
et tu testes si sAttrib a été rempli pour calculer nAttribLength :
if (strlen(dataTabString[nCpt].sAttrib) > 0)
nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
le fichier contient 6 lignes et le curseur est à la fin de dernier ligne de fichier.
S'il affiche k = 7, c'est qu'il passe 7 fois Mets un Break sur while (fgets(sLine, MAXLINE, pFile)) et tu regardes les variables (sLine notamment)
Où exactement dans le code que je dois fermer 'sAtirib' ?
Avant que nAttribLength soit renseigné forcément... Ou alors tu initialises avant ton sscanf() par memset(&dataTabString[nCpt], 0, sizeof(dataStruct)); et tu testes si sAttrib a été rempli pour calculer nAttribLength : if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
programmation
> Avant que nAttribLength soit renseigné forcément... Ou alors tu initialises avant ton sscanf() par memset(&dataTabString[nCpt], 0, sizeof(dataStruct)); et tu testes si sAttrib a été rempli pour calculer nAttribLength : if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
S'il vous plait, pouvez vous mettre les modifications à faire directement dans le code qui j'ai posé au dessus c'est à dire vous mettez le code complet avec les modifications que vous introduisez pour que je puisse mieux comprendre votre idée ?
Merci.
> Avant que nAttribLength soit renseigné forcément...
Ou alors tu initialises avant ton sscanf() par
memset(&dataTabString[nCpt], 0, sizeof(dataStruct));
et tu testes si sAttrib a été rempli pour calculer nAttribLength :
if (strlen(dataTabString[nCpt].sAttrib) > 0)
nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
S'il vous plait, pouvez vous mettre les modifications à faire
directement dans le code qui j'ai posé au dessus c'est à dire vous
mettez le code complet avec les modifications que vous introduisez
pour que je puisse mieux comprendre votre idée ?
> Avant que nAttribLength soit renseigné forcément... Ou alors tu initialises avant ton sscanf() par memset(&dataTabString[nCpt], 0, sizeof(dataStruct)); et tu testes si sAttrib a été rempli pour calculer nAttribLength : if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
S'il vous plait, pouvez vous mettre les modifications à faire directement dans le code qui j'ai posé au dessus c'est à dire vous mettez le code complet avec les modifications que vous introduisez pour que je puisse mieux comprendre votre idée ?
Merci.
programmation
Bonjour,
Quelles sont les modifications à faire dans le code suivant pour obtenir le bon résultat ?
> Avant que nAttribLength soit renseigné forcément... > Ou alors tu initialises avant ton sscanf() par > memset(&dataTabString[nCpt], 0, sizeof(dataStruct)); > et tu testes si sAttrib a été rempli pour calculer nAttribLength : > if (strlen(dataTabString[nCpt].sAttrib) > 0) > nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
S'il vous plait, pouvez vous mettre les modifications à faire directement dans le code qui j'ai posé au dessus
Ce que j'ai dit (c'est juste une soluton parmi d'autres...): - avant ton sscanf() : memset(&dataTabString[nCpt], 0, sizeof(dataStruct)); - et rajouter le test : if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
On 27 sep, 17:12, programmation <bouali.a...@gmail.com> wrote:
> Avant que nAttribLength soit renseigné forcément...
> Ou alors tu initialises avant ton sscanf() par
> memset(&dataTabString[nCpt], 0, sizeof(dataStruct));
> et tu testes si sAttrib a été rempli pour calculer nAttribLength :
> if (strlen(dataTabString[nCpt].sAttrib) > 0)
> nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
S'il vous plait, pouvez vous mettre les modifications à faire
directement dans le code qui j'ai posé au dessus
Ce que j'ai dit (c'est juste une soluton parmi d'autres...):
- avant ton sscanf() :
memset(&dataTabString[nCpt], 0, sizeof(dataStruct));
- et rajouter le test :
if (strlen(dataTabString[nCpt].sAttrib) > 0)
nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
> Avant que nAttribLength soit renseigné forcément... > Ou alors tu initialises avant ton sscanf() par > memset(&dataTabString[nCpt], 0, sizeof(dataStruct)); > et tu testes si sAttrib a été rempli pour calculer nAttribLength : > if (strlen(dataTabString[nCpt].sAttrib) > 0) > nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
S'il vous plait, pouvez vous mettre les modifications à faire directement dans le code qui j'ai posé au dessus
Ce que j'ai dit (c'est juste une soluton parmi d'autres...): - avant ton sscanf() : memset(&dataTabString[nCpt], 0, sizeof(dataStruct)); - et rajouter le test : if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
programmation
> Ce que j'ai dit (c'est juste une soluton parmi d'autres...): - avant ton sscanf() : memset(&dataTabString[nCpt], 0, sizeof(dataStruct)); - et rajouter le test : if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
il y a beaucoup des 'scanf' dans le code où je vais ajouter 'memset (&dataTabString[nCpt], 0, sizeof(dataStruct));'
De plus où on ajoute exactement dans le code le test suivant : ?
if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
Quel est le rôle de ces deux ajouts ?
Merci.
> Ce que j'ai dit (c'est juste une soluton parmi d'autres...):
- avant ton sscanf() :
memset(&dataTabString[nCpt], 0, sizeof(dataStruct));
- et rajouter le test :
if (strlen(dataTabString[nCpt].sAttrib) > 0)
nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
il y a beaucoup des 'scanf' dans le code où je vais ajouter 'memset
(&dataTabString[nCpt], 0, sizeof(dataStruct));'
De plus où on ajoute exactement dans le code le test suivant : ?
if (strlen(dataTabString[nCpt].sAttrib) > 0)
nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
> Ce que j'ai dit (c'est juste une soluton parmi d'autres...): - avant ton sscanf() : memset(&dataTabString[nCpt], 0, sizeof(dataStruct)); - et rajouter le test : if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
il y a beaucoup des 'scanf' dans le code où je vais ajouter 'memset (&dataTabString[nCpt], 0, sizeof(dataStruct));'
De plus où on ajoute exactement dans le code le test suivant : ?
if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
Quel est le rôle de ces deux ajouts ?
Merci.
Christian ASTOR
On 28 sep, 15:57, programmation wrote:
il y a beaucoup des 'scanf' dans le code où je vais ajouter 'memset (&dataTabString[nCpt], 0, sizeof(dataStruct));'
Forcément dans la boucle fgets(), avant de lire dataTabString, pour initialiser dataTabString[nCpt], avant de le remplir avec sscanf(), puisque nAttribLength a une valeur farfelue quand la ligne est vide et que dataTabString[nCpt] n'est pas initialisé...
De plus où on ajoute exactement dans le code le test suivant : ? if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
Tu as : nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1; Où veux-tu rajouter le test sur cette ligne ailleurs qu'à cette ligne (???)
On 28 sep, 15:57, programmation <bouali.a...@gmail.com> wrote:
il y a beaucoup des 'scanf' dans le code où je vais ajouter 'memset
(&dataTabString[nCpt], 0, sizeof(dataStruct));'
Forcément dans la boucle fgets(), avant de lire dataTabString, pour
initialiser dataTabString[nCpt], avant de le remplir avec sscanf(),
puisque nAttribLength a une valeur farfelue quand la ligne est vide et
que dataTabString[nCpt] n'est pas initialisé...
De plus où on ajoute exactement dans le code le test suivant : ?
if (strlen(dataTabString[nCpt].sAttrib) > 0)
nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
Tu as :
nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
Où veux-tu rajouter le test sur cette ligne ailleurs qu'à cette ligne
(???)
il y a beaucoup des 'scanf' dans le code où je vais ajouter 'memset (&dataTabString[nCpt], 0, sizeof(dataStruct));'
Forcément dans la boucle fgets(), avant de lire dataTabString, pour initialiser dataTabString[nCpt], avant de le remplir avec sscanf(), puisque nAttribLength a une valeur farfelue quand la ligne est vide et que dataTabString[nCpt] n'est pas initialisé...
De plus où on ajoute exactement dans le code le test suivant : ? if (strlen(dataTabString[nCpt].sAttrib) > 0) nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
Tu as : nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1; Où veux-tu rajouter le test sur cette ligne ailleurs qu'à cette ligne (???)