Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Erreur de segmentation (core dumped) [ Linux / Autre ] (yansei)

mercredi 4 juin 2008 à 15:57:36 | Erreur de segmentation (core dumped)

yansei

Je suis en train d'essayer de créer un programme qui a pour but de changer la date du système et de créer (à chaque changement de date) deux fichiers quelconques.

Voici mon programme actuel:

#include <stdio.h>
#include <time.h>

int main()
{
char *nomfic;
int i;
FILE *sortie;

for(i=0; i<100; i++)
{
sprintf(nomfic, "home/denis/Stage/save/fic1%d", i);
sortie=fopen(nomfic, "w");
fclose(sortie);
sprintf(nomfic, "/home/denis/Stage/save/fic2%d", i);
sortie=fopen(nomfic, "w");
fclose(sortie);
system("date -s yesterday");
}
system("date -s 06/04/2008");
printf("Fin du programme \n";
}

Donc, je compile le programme et tout va bien, malheureusement dès que je veux l'exécuter il me marque: "Erreur de segmentation (core dumped)".

J'ai chercher dans pas mal de doc et je ne vois pas où est le problème.

Merci de m'aider (si possible essayer de commenter les solutions que vous me donnerez afin que je comprenne ce que vous me donnez).

yansei


mercredi 4 juin 2008 à 16:14:14 | Re : Erreur de segmentation (core dumped)

Pistol_Pete

Réponse acceptée !
Salut

Tu n'as pas alloué de memoire pour le pointeur nomfic. tu ecris donc dans des cases ou tu n'as pas le droit d'ecrire d'ou l'erreur de segmentation.

Et autre chose il faut TOUJOURS tester les resultats des fonctions.

Ici, tu utilises "sortie" sans savoir s'il pointe sur quelque chose...

Insere un petit test apres l'ouverture de ton fichier:
if(sortie ==0) 
   printf("erreur\n");

A+
Mon site internet : [ Lien ]


mercredi 4 juin 2008 à 16:22:44 | Re : Erreur de segmentation (core dumped)

yansei

Réponse acceptée !
Je viens d'apporter quelque changement.
Mon nouveau code:

#include <stdio.h>
#include <time.h>

int main()
{
char fic[30];
int i;
FILE *sortie;

for(i=0; i<100; i++)
{
sprintf(fic, "home/denis/Stage/save/fic1%d", i);
sortie=fopen(fic, "w");
fclose(sortie);
sprintf(fic, "/home/denis/Stage/save/fic2%d", i);
sortie=fopen(fic, "w");
fclose(sortie);
system("date -s yesterday");
}
system("date -s 06/04/2008");
printf("Fin du programme \n";
}

Cela m'enlève effectivement mon soucis d'erreur de segmentation.

Toute fois, et du fait que j'ai pus allez plus loin grâce à ce merveilleux conseil, j'ai désormais un second problème:

Cela ne me crée pas le nombre de fichier espéré, je n'ai que deux fichier intitulé: fic1100 et fic2100.
Chose assez bizzare car cela voudrait dire que je ne crée que les deux derniers fichiers ???

Un conseil ???

mercredi 4 juin 2008 à 16:57:41 | Re : Erreur de segmentation (core dumped)

Pistol_Pete

Réponse acceptée !
Etrange en effet, chez moi ca marche sans probleme.
Essaye de mettre un break point apres chaque creation de fichier et regarde s'il a bien ete cree dans ton repertoire.

Et test bien ta variable sortie aussi.

A+
Mon site internet : [ Lien ]


mercredi 4 juin 2008 à 17:36:38 | Re : Erreur de segmentation (core dumped)

luhtor

Réponse acceptée !
Commence par  agrandir ton tableau de caractère, 30 c'est trop petit, t'as oublié le 0 terminal.

mercredi 4 juin 2008 à 17:49:27 | Re : Erreur de segmentation (core dumped)

Pistol_Pete

Réponse acceptée !
Oui c'est vrai.
C'est correct pour ton premier sprintf, ya 29 char + 1 pour le zero terminal mais pas pour ton second sprintf: ya 1 caractere de plus (le / au debut de ta chaine)

Il n'empeche que ca devrait marcher pour tous, SAUF pour le dernier fichier fic2100.

A+
Mon site internet : [ Lien ]


jeudi 5 juin 2008 à 10:23:14 | Re : Erreur de segmentation (core dumped)

yansei

Réponse acceptée !

Je vous remercie pour ces conseils, je viens de fair des modifications (comme allouer 40 au lieu de 30).

Je viens également de vérifier le bon fonctionnement de mes fopen et tout fonctionne correctement.

Chose des plus bizzare, il semble que mon programme ne fonctionne seulement qu'en je m'identifie en "sudo".

J'ai pensé au début que cela était du au fait que j'appel une modification de date, mais quand je passe les changement de date en commentaire (afin qu'ils ne soient pas pris en compte lors de la compilation et de l'exécution du programme), je m'apperçoie qu'il est quand même nécessaire que je soit en root.


jeudi 5 juin 2008 à 10:52:34 | Re : Erreur de segmentation (core dumped)

yansei

Réponse acceptée !

Bon tout fonctionne correctement.

Je remercie tout le monde pour l'aide que vous m'avez apporter.

Bien amicalement

yansei




Cette discussion est classé dans : programme, date, erreur, sortie, nomfic


Répondre à ce message

Sujets en rapport avec ce message

Erreur de segmentation [ par yansei ] Bonjour à tous, voilà j'ai créé il y de cela un mois un programme permettant de créé une liste de fichier à des dates différentes.Tout fonctionnais bi Le time [ par warmup1992 ] Salut à tous, Je cherche a réalisé un programme un peut inutile .... La source ne sera pas immense ...J'ai juste envie de le faire ...je m'explique : Date et heure [ par raph004 ] Bonjour,Je souhaite réaliser un programme qui grâce à un un premier réglage de l'heure et de la date est capable de rester à l'heure de façon autonome question existentielle [ par LaTatadu91 ] Bonjour,Voila j'ai un probleme avec un programme qui par moment peut générer des erreurs: sur des strcat ou autre bref une fenetre d'erreur s'affiche sortie console d'un programme appelé, vers une chaine de caractere [ par zurp ] bonjour,je travail sous un environnement windows avec borland cpp. j'ecris un programme qui lance plusieurs autre programme (d'on je n ai pas les so rapport d'erreur [ par Stormy ] Salut à tous,J'ai un problème sans gravité sur une application. J'ai un code qui fonctionne bien mais il s'affiche rarement une information qui indiqu erreur au demarrage du programme [ par Armandopoulos ] salut,je bosse actuellement sur une application serveur et utilise la librairie live555 pour envoyer des frames en Multicast à des clients comme vlc a erreur 1017 [ par bobbk12000 ] SVP est ce que vous pouvez m'aider en me disant que veut dire erreur 1017 sous borland 4.5 sachant que mon programme est t'une implimentation de opt-k erreur de demarrage programme [ par nango ] Quand je compile sous visual c++ il m'apparait le message d'erreur suivant : "un fichier.DLL requis, MSPDB60.DLL, n'a pas été trouvé".Pourtant ce fich besoin d'aide pour un programme, urgent [ par julie ] langage français !! ou pascaljai un programme a réaliser. en fait un utilisateur entre son nom, prenom, age, profession, date de naissance, date du jo


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.