Incident de segmentation C (en lecture de fic
____22
Messages postés
101
Statut
Membre
-
mype Messages postés 2459 Date d'inscription Statut Membre Dernière intervention -
mype Messages postés 2459 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
le code:
fich.txt contient 1 sur la 1ere ligne puis 2 ...
j'ai compilé ce prog avec gcc (sous linux)
j'obtiens
u»EÜÀt)EÔ9EàtUìMÔU¸EìMðéÂþÿÿMìM¸é·þÿÿUìU¸é¬þÿÿMÔEì9MðE¸þÿÿUìëËÇEÈ
»EÜÀt)EÔ9EàtUìMÔU¸EìMðéÂþÿÿMìM¸é·þÿÿUìU¸é¬þÿÿMÔEì9MðE¸þÿÿUìëËÇEÈ
ÆÒu»EÜÀt)EÔ9EàtUìMÔU¸EìMðéÂþÿÿMìM¸é·þÿÿUìU¸é¬þÿÿMÔEì9MðE¸þÿÿUìëËÇEÈ
Incident de segmentation
ou aussi des fois:
l previous options combined
previous options combined
Incident de segmentation
le code:
#include <stdio.h>
main ()
{
FILE *fp;
char *s;
fp = fopen("fich.txt", "r");
if (!fp) exit(1);
while(!feof(fp))
{
fscanf(fp, "%s\n",&s); /* copy some info */
printf("%s\n",s);
}
fclose(fp);
}
fich.txt contient 1 sur la 1ere ligne puis 2 ...
j'ai compilé ce prog avec gcc (sous linux)
j'obtiens
u»EÜÀt)EÔ9EàtUìMÔU¸EìMðéÂþÿÿMìM¸é·þÿÿUìU¸é¬þÿÿMÔEì9MðE¸þÿÿUìëËÇEÈ
»EÜÀt)EÔ9EàtUìMÔU¸EìMðéÂþÿÿMìM¸é·þÿÿUìU¸é¬þÿÿMÔEì9MðE¸þÿÿUìëËÇEÈ
ÆÒu»EÜÀt)EÔ9EàtUìMÔU¸EìMðéÂþÿÿMìM¸é·þÿÿUìU¸é¬þÿÿMÔEì9MðE¸þÿÿUìëËÇEÈ
Incident de segmentation
ou aussi des fois:
l previous options combined
previous options combined
Incident de segmentation
Configuration: Linux Debian Firefox 1.5.0.5
13 réponses
-
dans le fscanf tu es pas censé avoir "\n" apres "%s" et enleve aussi le "&" avant le "s"
-
pardon il y a aussi #include <string.h> dans le code
pour te répondre mype, \n et &s sont nécéssaires
ce code avait deja marché auparavant, maintenant ça marche plus
parceque peut etre la mémoire est saturée -
si tu le dit...
-
si tu veux voici un programme qui fait ce que tu veux faire (les nombres dans le fichier texte vont jusqu'a 36 et ils sont chacun sur une ligne)
#include <stdio.h> #include <string.h> main () { FILE *fp; char *s; int i; fp = fopen("fich.txt", "r"); if (!fp) exit(1); else { s=malloc(100); for(i=0;i<100;i++) fscanf(fp, "%c",&s[i]); printf("%s\n",s); } fclose(fp); free(s); } -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
je viens de réessayer mon programme
il affiche:
emory for thread-local data: ABORT
mory for thread-local data: ABORT
cate memory for thread-local data: ABORT
Incident de segmentation
pour ton programme il y a un probleme a la compilation:
renaud14 <5> gcc test.c
test.c: Dans la fonction « main »:
test.c:15: attention : affectation transforme un entier en pointeur sans transtypage -
-
c'est juste un warning je pense c'est pas une erreur comme je suis pas sur linux en ce moment sa me le dit pas
dans ce cas essaye ça
#include <stdio.h> #include <string.h> int main () { FILE *fp; char *s; int i; fp = fopen("fich.txt", "r"); if (!fp) exit(1); else { s=malloc(100); for(i=0;i<100;i++) fscanf(fp, "%c",&s[i]); printf("%s\n",s); } fclose(fp); free(s); return 0; } -
en enlevant s=malloc(100);
ça marche presque j'obtiens:
1
2
+
1
5
+
-
5
*
·0îñ·
free(): invalid pointer 0xb7f36540!
Incident de segmentation
(fich.txt contient 1\n2\n+\n1\n5\n+\n-\n5\n*\n
(\n retour a la ligne)
presque parceque incident de segmentation aurait stoppeé le reste du programme en cours -
-
chez moi ça marche...
c'est quoi le probleme que te dit le compilateur ? -
1
2
+
1
5
+
-
5
*
ò·0þò·
free(): invalid pointer 0xb7f47540!
Incident de segmentation
-
il y a combien de caractere dans ton fichier ? -
si tu connais le nombre de ligne tu peux utiliser ce programme et changer le nombre de ligne en fonction de ton fichier
#include <stdio.h> #include <string.h> #include <stdlib.h> #define LIGNE 6 int main () { FILE *fp; char *s; int i; fp = fopen("fich.txt", "r"); if (!fp) exit(1); else { s=malloc(100); for(i=1;i<=LIGNE;i++){ fscanf(fp,"%s",s); printf("%s\n",s);} } fclose(fp); free(s); return 0; }