begin process at 2012 05 29 08:30:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Autre

 > 

Erreur de segmentation (core dumped)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur de segmentation (core dumped)

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ée 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 programme en c++ dannant une erreur declaration terminated incorrectly [ par desco182 ] VEUILLEZ M'AIDER SVP!!!!!!!!!!#include#include//prototypesint sominterval(int x ,int y);<br 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 programme PIC16F876 [ par LEROI976 ] je veux créer un programme permettant de sortir des impulsions sur une sortie d'un port. je veux cadencer une horloge sur cette sortie. quand je dois programme de date [ par kach307 ] salut j'ai un petit problème en programmation on ma demander décrire un programme en C qui permet de rechercher le nom du jour d'une date donnée (expi


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales