Quelqu'un sait-il pourquoi la compilation se passe sans problème mais
lors de l'exécution, windows me retourne un message d'erreur. On dirait
qu'il a un problème de taille dans *sCommand[] ou de dépassement de
tampon mais je n'en suis pas sûre. Merci d'avance pour votre aide.
Quelqu'un sait-il pourquoi la compilation se passe sans problème mais lors de l'exécution, windows me retourne un message d'erreur. On dirait qu'il a un problème de taille dans *sCommand[] ou de dépassement de tampon mais je n'en suis pas sûre. Merci d'avance pour votre aide.
Pour ce que j'en sais,
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
2- Je ne crois pas qu'il soit possible d'utiliser des expressions dans les litéraux {} d'initialisation.
3- strcat demande une chaîne MUTABLE comme destination, et contenant assez d'espace pour le résultat. "cato.exe " n'est ni mutable, ni assez grande (à moins que lTab[0]=="").
4- main doit retourner un int.
Et je ne vois pas pourquoi tu utilise des tableaux d'un seul élément, à quoi ça rime?
Aussi, les fonctions de bibliothèque standard C sont plutôt rudimentaire; il vaudrait mieux écrire des fonctions de plus haut niveau, gérant les détails de l'allocation de la mémoire, etc.
Quelqu'un sait-il pourquoi la compilation se passe sans problème mais
lors de l'exécution, windows me retourne un message d'erreur. On
dirait qu'il a un problème de taille dans *sCommand[] ou de
dépassement de tampon mais je n'en suis pas sûre. Merci d'avance pour
votre aide.
Pour ce que j'en sais,
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il
est possible que sCommand soit initialisé avant lTab, alors lTab[0]
peut être invalide.
2- Je ne crois pas qu'il soit possible d'utiliser des expressions dans
les litéraux {} d'initialisation.
3- strcat demande une chaîne MUTABLE comme destination, et contenant
assez d'espace pour le résultat. "cato.exe " n'est ni mutable, ni
assez grande (à moins que lTab[0]=="").
4- main doit retourner un int.
Et je ne vois pas pourquoi tu utilise des tableaux d'un seul élément,
à quoi ça rime?
Aussi, les fonctions de bibliothèque standard C sont plutôt
rudimentaire; il vaudrait mieux écrire des fonctions de plus haut
niveau, gérant les détails de l'allocation de la mémoire, etc.
Quelqu'un sait-il pourquoi la compilation se passe sans problème mais lors de l'exécution, windows me retourne un message d'erreur. On dirait qu'il a un problème de taille dans *sCommand[] ou de dépassement de tampon mais je n'en suis pas sûre. Merci d'avance pour votre aide.
Pour ce que j'en sais,
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
2- Je ne crois pas qu'il soit possible d'utiliser des expressions dans les litéraux {} d'initialisation.
3- strcat demande une chaîne MUTABLE comme destination, et contenant assez d'espace pour le résultat. "cato.exe " n'est ni mutable, ni assez grande (à moins que lTab[0]=="").
4- main doit retourner un int.
Et je ne vois pas pourquoi tu utilise des tableaux d'un seul élément, à quoi ça rime?
Aussi, les fonctions de bibliothèque standard C sont plutôt rudimentaire; il vaudrait mieux écrire des fonctions de plus haut niveau, gérant les détails de l'allocation de la mémoire, etc.
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
Tu peux me dire pourquoi, dans son code, sCommand peut-être initialisé avant lTab ?
@+ -- Kévin ASSE-CEBORDEAU (signature et citation aléatoires) LOI (à la con) Il est illégal pour toute personne de sexe masculin, a l'intérieur des limites de la ville, de faire un clin d'oeil a toute personne de sexe féminin qu'il ne connaît pas. (Ottumwa, Iowa)
Pascal Bourguignon a écrit le vendredi 8 décembre 2006 16:02 :
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il
est possible que sCommand soit initialisé avant lTab, alors lTab[0]
peut être invalide.
Tu peux me dire pourquoi, dans son code, sCommand peut-être initialisé avant
lTab ?
@+
--
Kévin ASSE-CEBORDEAU (signature et citation aléatoires)
LOI (à la con)
Il est illégal pour toute personne de sexe masculin, a l'intérieur des
limites de la ville, de faire un clin d'oeil a toute personne de sexe
féminin qu'il ne connaît pas. (Ottumwa, Iowa)
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
Tu peux me dire pourquoi, dans son code, sCommand peut-être initialisé avant lTab ?
@+ -- Kévin ASSE-CEBORDEAU (signature et citation aléatoires) LOI (à la con) Il est illégal pour toute personne de sexe masculin, a l'intérieur des limites de la ville, de faire un clin d'oeil a toute personne de sexe féminin qu'il ne connaît pas. (Ottumwa, Iowa)
Pierre Maurette
Pascal Bourguignon a écrit le vendredi 8 décembre 2006 16:02 :
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
Tu peux me dire pourquoi, dans son code, sCommand peut-être initialisé avant lTab ?
Je ne trouve pas ça très très étonnant. sCommand[] est un tableau de char*, initialisé à la valeur const char* "cato.exe " considérée comme une constante immédiate par le compilateur. Ceci dit, le contraire m'aurait encore moins étonné, au motif de la fonction strcat().
-- Pierre Maurette
Pascal Bourguignon a écrit le vendredi 8 décembre 2006 16:02 :
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il
est possible que sCommand soit initialisé avant lTab, alors lTab[0]
peut être invalide.
Tu peux me dire pourquoi, dans son code, sCommand peut-être initialisé avant
lTab ?
Je ne trouve pas ça très très étonnant. sCommand[] est un tableau de
char*, initialisé à la valeur const char* "cato.exe " considérée comme
une constante immédiate par le compilateur.
Ceci dit, le contraire m'aurait encore moins étonné, au motif de la
fonction strcat().
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
Tu peux me dire pourquoi, dans son code, sCommand peut-être initialisé avant lTab ?
Je ne trouve pas ça très très étonnant. sCommand[] est un tableau de char*, initialisé à la valeur const char* "cato.exe " considérée comme une constante immédiate par le compilateur. Ceci dit, le contraire m'aurait encore moins étonné, au motif de la fonction strcat().
-- Pierre Maurette
Eric Levenez
Le 8/12/06 16:02, dans , « Pascal Bourguignon » a écrit :
Yves Lange writes:
# include <stdio.h>
main(){ // Liste des fichiers à manipuler. char *lTab[] = {"c:test.txt"}; char *sCommand[] = {strcat("cato.exe ", lTab[0])};
system(sCommand); return 0; }
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
Ce n'est pas de haut en bas ?
2- Je ne crois pas qu'il soit possible d'utiliser des expressions dans les litéraux {} d'initialisation.
Le mieux est en effet de supprimer les accolades des 2 affectations qui ne servent à rien du tout.
3- strcat demande une chaîne MUTABLE comme destination, et contenant assez d'espace pour le résultat. "cato.exe " n'est ni mutable, ni assez grande (à moins que lTab[0]=="").
4- main doit retourner un int.
5 - il manque les includes string.h pour strcat et stdlib.h pour system.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 8/12/06 16:02, dans <878xhi5t30.fsf@thalassa.informatimago.com>, « Pascal
Bourguignon » <pjb@informatimago.com> a écrit :
Yves Lange <yves.lange@bluewin.ch> writes:
# include <stdio.h>
main(){
// Liste des fichiers à manipuler.
char *lTab[] = {"c:\test.txt"};
char *sCommand[] = {strcat("cato.exe ", lTab[0])};
system(sCommand);
return 0;
}
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il
est possible que sCommand soit initialisé avant lTab, alors lTab[0]
peut être invalide.
Ce n'est pas de haut en bas ?
2- Je ne crois pas qu'il soit possible d'utiliser des expressions dans
les litéraux {} d'initialisation.
Le mieux est en effet de supprimer les accolades des 2 affectations qui ne
servent à rien du tout.
3- strcat demande une chaîne MUTABLE comme destination, et contenant
assez d'espace pour le résultat. "cato.exe " n'est ni mutable, ni
assez grande (à moins que lTab[0]=="").
4- main doit retourner un int.
5 - il manque les includes string.h pour strcat et stdlib.h pour system.
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Le 8/12/06 16:02, dans , « Pascal Bourguignon » a écrit :
Yves Lange writes:
# include <stdio.h>
main(){ // Liste des fichiers à manipuler. char *lTab[] = {"c:test.txt"}; char *sCommand[] = {strcat("cato.exe ", lTab[0])};
system(sCommand); return 0; }
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
Ce n'est pas de haut en bas ?
2- Je ne crois pas qu'il soit possible d'utiliser des expressions dans les litéraux {} d'initialisation.
Le mieux est en effet de supprimer les accolades des 2 affectations qui ne servent à rien du tout.
3- strcat demande une chaîne MUTABLE comme destination, et contenant assez d'espace pour le résultat. "cato.exe " n'est ni mutable, ni assez grande (à moins que lTab[0]=="").
4- main doit retourner un int.
5 - il manque les includes string.h pour strcat et stdlib.h pour system.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Pascal Bourguignon
Eric Levenez writes:
Le 8/12/06 16:02, dans , « Pascal Bourguignon » a écrit :
Yves Lange writes:
# include <stdio.h>
main(){ // Liste des fichiers à manipuler. char *lTab[] = {"c:test.txt"}; char *sCommand[] = {strcat("cato.exe ", lTab[0])};
system(sCommand); return 0; }
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
Ce n'est pas de haut en bas ?
Peut être dans le cas de variable auto locales, oui.
Mais dans le cas de variable statiques, je ne crois pas que le standard impose un quelconque ordre.
2- Je ne crois pas qu'il soit possible d'utiliser des expressions dans les litéraux {} d'initialisation.
Le mieux est en effet de supprimer les accolades des 2 affectations qui ne servent à rien du tout.
3- strcat demande une chaîne MUTABLE comme destination, et contenant assez d'espace pour le résultat. "cato.exe " n'est ni mutable, ni assez grande (à moins que lTab[0]=="").
4- main doit retourner un int.
5 - il manque les includes string.h pour strcat et stdlib.h pour system.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
HEALTH WARNING: Care should be taken when lifting this product, since its mass, and thus its weight, is dependent on its velocity relative to the user.
Eric Levenez <news@levenez.com> writes:
Le 8/12/06 16:02, dans <878xhi5t30.fsf@thalassa.informatimago.com>, « Pascal
Bourguignon » <pjb@informatimago.com> a écrit :
Yves Lange <yves.lange@bluewin.ch> writes:
# include <stdio.h>
main(){
// Liste des fichiers à manipuler.
char *lTab[] = {"c:\test.txt"};
char *sCommand[] = {strcat("cato.exe ", lTab[0])};
system(sCommand);
return 0;
}
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il
est possible que sCommand soit initialisé avant lTab, alors lTab[0]
peut être invalide.
Ce n'est pas de haut en bas ?
Peut être dans le cas de variable auto locales, oui.
Mais dans le cas de variable statiques, je ne crois pas que le
standard impose un quelconque ordre.
2- Je ne crois pas qu'il soit possible d'utiliser des expressions dans
les litéraux {} d'initialisation.
Le mieux est en effet de supprimer les accolades des 2 affectations qui ne
servent à rien du tout.
3- strcat demande une chaîne MUTABLE comme destination, et contenant
assez d'espace pour le résultat. "cato.exe " n'est ni mutable, ni
assez grande (à moins que lTab[0]=="").
4- main doit retourner un int.
5 - il manque les includes string.h pour strcat et stdlib.h pour system.
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
HEALTH WARNING: Care should be taken when lifting this product,
since its mass, and thus its weight, is dependent on its velocity
relative to the user.
Le 8/12/06 16:02, dans , « Pascal Bourguignon » a écrit :
Yves Lange writes:
# include <stdio.h>
main(){ // Liste des fichiers à manipuler. char *lTab[] = {"c:test.txt"}; char *sCommand[] = {strcat("cato.exe ", lTab[0])};
system(sCommand); return 0; }
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
Ce n'est pas de haut en bas ?
Peut être dans le cas de variable auto locales, oui.
Mais dans le cas de variable statiques, je ne crois pas que le standard impose un quelconque ordre.
2- Je ne crois pas qu'il soit possible d'utiliser des expressions dans les litéraux {} d'initialisation.
Le mieux est en effet de supprimer les accolades des 2 affectations qui ne servent à rien du tout.
3- strcat demande une chaîne MUTABLE comme destination, et contenant assez d'espace pour le résultat. "cato.exe " n'est ni mutable, ni assez grande (à moins que lTab[0]=="").
4- main doit retourner un int.
5 - il manque les includes string.h pour strcat et stdlib.h pour system.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
HEALTH WARNING: Care should be taken when lifting this product, since its mass, and thus its weight, is dependent on its velocity relative to the user.
Thomas Labourdette
Pierre Maurette a écrit le vendredi 8 décembre 2006 18:14 :
Pascal Bourguignon a écrit le vendredi 8 décembre 2006 16:02 :
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
Tu peux me dire pourquoi, dans son code, sCommand peut-être initialisé avant lTab ?
Je ne trouve pas ça très très étonnant.
Qu'est-ce qui n'est pas très étonnant ? Entre lTab et sCommand, il y a un point de séquencement donc lTab est initialisé avant sCommand (la prise en compte étant de haut en bas).
@+ -- Bill BOKAI (signature et citation aléatoires) Qu'est-ce qui fait 13,2 cm mais qui excite les femmes ? Un billet de 500 Euros.
Pierre Maurette a écrit le vendredi 8 décembre 2006 18:14 :
Pascal Bourguignon a écrit le vendredi 8 décembre 2006 16:02 :
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il
est possible que sCommand soit initialisé avant lTab, alors lTab[0]
peut être invalide.
Tu peux me dire pourquoi, dans son code, sCommand peut-être initialisé
avant lTab ?
Je ne trouve pas ça très très étonnant.
Qu'est-ce qui n'est pas très étonnant ?
Entre lTab et sCommand, il y a un point de séquencement donc lTab est
initialisé avant sCommand (la prise en compte étant de haut en bas).
@+
--
Bill BOKAI (signature et citation aléatoires)
Qu'est-ce qui fait 13,2 cm mais qui excite les femmes ?
Un billet de 500 Euros.
1- L'ordre de l'initialisation des variables n'est pas spécifié. Il est possible que sCommand soit initialisé avant lTab, alors lTab[0] peut être invalide.
Tu peux me dire pourquoi, dans son code, sCommand peut-être initialisé avant lTab ?
Je ne trouve pas ça très très étonnant.
Qu'est-ce qui n'est pas très étonnant ? Entre lTab et sCommand, il y a un point de séquencement donc lTab est initialisé avant sCommand (la prise en compte étant de haut en bas).
@+ -- Bill BOKAI (signature et citation aléatoires) Qu'est-ce qui fait 13,2 cm mais qui excite les femmes ? Un billet de 500 Euros.