Hallo iedereen,
Ik moet noodgedwongen programmeren in C voor een project Algoritmen & Datastructuren (voor performantieredenen).
Ik ben (bij wijze van inleiding) begonnen met het schrijven van een aantal regels die een bestandje uitschrijven om de syntax wat herop te frissen.
Maar hierbij ben ik echter op iets vreemds gestoten. Omdat ik geen echte inputfiles had testte ik steeds met inputreader.c, de source (niet de header) van het uiteindelijke programmaatje.
Telkens als ik dat als argument doorgaf gaf hij een segmentation fault (core dumped). Heel frustrerend want bij elk ander bestand deed hij dat niet.
Nu zou ik graag willen weten hoe dat kan, heb ik geen rekening gehouden met eventuele niet-afdrukbare tekens? Maar dat verklaart ook niet waarom er een geheugenfout optreedt.
Hieronder de snippet:
Dit geeft de volgende output:
Ik hoop van harte dat jullie mij verder kunnen helpen, want ik ben ten einde raad.
Met vriendelijke groeten & alvast bedankt
Ik moet noodgedwongen programmeren in C voor een project Algoritmen & Datastructuren (voor performantieredenen).
Ik ben (bij wijze van inleiding) begonnen met het schrijven van een aantal regels die een bestandje uitschrijven om de syntax wat herop te frissen.
Maar hierbij ben ik echter op iets vreemds gestoten. Omdat ik geen echte inputfiles had testte ik steeds met inputreader.c, de source (niet de header) van het uiteindelijke programmaatje.
Telkens als ik dat als argument doorgaf gaf hij een segmentation fault (core dumped). Heel frustrerend want bij elk ander bestand deed hij dat niet.
Nu zou ik graag willen weten hoe dat kan, heb ik geen rekening gehouden met eventuele niet-afdrukbare tekens? Maar dat verklaart ook niet waarom er een geheugenfout optreedt.
Hieronder de snippet:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| /* inputreader.c Project Algoritmen & Datastructuren 3 Laatste update: 16/10/2010 */ #include "inputreader.h" int main(int argc, char *argv[]) { /* For test purposes only */ read_file(argc,argv); } void read_file(int argc, char *argv[]) { if(argc<2) { printf("Usage: command [textfile]\n"); printf("%s exited with exit code: %d\n",argv[0],1); exit(1); } FILE *zoekwoordfile = fopen(argv[1],"r+"); if(zoekwoordfile==NULL) { printf("Foutief bestand, controleer of %s wel bestaat.\n",argv[1]); exit(1); } printf("Bestand gevonden. Start leesoperatie.\n"); char line[2000]; while(fgets(line, 20, zoekwoordfile)) { printf(line); } } |
Dit geeft de volgende output:
~/PROJECTDA3/src >../dest/projectda3.o inputreader.c Bestand gevonden. Start leesoperatie. /* inputreader.c Project Algoritmen & Datastructuren 3 Laatste update: 16/10/2010 */ #include "inputreader.h" int main(int argc, char *argv[]) { /* For test purposes only */ read_file(argc,argv); } void read_file(int argc, char *argv[]) { if(argc<2) { printf("Usage: command [textfile]\n"); Segmentation Fault (core dumped)
Ik hoop van harte dat jullie mij verder kunnen helpen, want ik ben ten einde raad.
Met vriendelijke groeten & alvast bedankt