Toon posts:

[C] Txt file inlezen in array*

Pagina: 1
Acties:
  • 125 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb de volgende code om een txt file naar een array te kopieren.

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
case 1:
 pnf=fopen("Intweek.txt", "r");
 fscanf(pnf, "%d", tabel[i][j]);
 break;
 
case 2:
 pnf=fopen("Intwkd.txt" , "r");
 fscanf(pnf, "%d" , tabel[i][j] );
 break;
 
default:
 printf("Error: Keuze onbekend\n");
 return 0;
 break;
 
}

{
         for(i=0; i<RIJ; i++)
         for(j=0; j<KOLOM; j++)
                  fscanf(pnf, "%d" , tabel[i][j]);
     
}
  


printf("%d\t%", tabel[i][j]);

     

fclose(pnf);   


Deze code werkt in linux goed, maar nu wil ik dit in windows proberen met de compiler Dev-c en nu werkt dat niet meer.
Iemand een idee waardoor dit komt?

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
omdat C# geen c++ is?

iets zegt me dat je ergens een compile error krijgt..

[ Voor 57% gewijzigd door BasieP op 05-07-2007 15:28 ]

This message was sent on 100% recyclable electrons.


Verwijderd

Topicstarter
Ik weet dat C# geen c++ is het moet ook gewoon in C# geschreven worden.
Ik krijg geen compile error, als ik het programma run loopt het vast na de keuze van de case.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Wat heeft dit met C# te maken ?
Iig, de topictitel veranderd naar 'C'
Kan het te maken hebben met het feit dat het EOL karakter in Windows anders is dan in *nix ?

En als het in C#moet geschreven worden, wat doet die C code hier dan ? Het is iig niet de bedoeling dat wij die code hier in C# gaan omzetten

[ Voor 63% gewijzigd door whoami op 05-07-2007 15:33 ]

https://fgheysels.github.io/


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik zie in je code voorbeeld alleen c/c++ code en geen C# code eigenlijk. Verder zul je toch wat meer informatie moeten geven wat er niet werkt. Hiervoor zal je dus even moeten debuggen

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
Ik bedoel C ja, is die compiler die ik gebruik daar dan niet geschikt voor?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
1. C# <> C, dus, zeg dan C en niet C#
2. Heb je al eens gedebugged ? Wat is vastlopen, krijg je een specifieke error ? Zoja, welke.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Tijdens het debuggen krijg ik een segmentatiefout

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

FYI, er bestaan drie compleet verschillende programmeertalen met ongeveer dezelfde naam: C, C++ en C#. Haal die niet door elkaar, want dat zorgt (zoals je al ziet) voor enorme verwarring.

Verder: wáár krijg je de segfault? Als in, op welke regel van je code? Wat is 'tabel' voor type? Hoe initialiseer je die?

[ Voor 27% gewijzigd door .oisyn op 05-07-2007 15:41 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Verwijderd schreef op donderdag 05 juli 2007 @ 15:37:
Tijdens het debuggen krijg ik een segmentatiefout
Tja, met dergelijke info kunnen we eigenlijk ook niet veel.
Van hieruit kunnen we moeilijk ruiken wat het probleem precies is , als je niet met specifieke informatie komt.
En als we moeten beginnen met de pieren uit je neus te vragen, dan zal het niet lang duren alvorens men de brui aan dit topic geeft

https://fgheysels.github.io/


  • user109731
  • Registratie: Maart 2004
  • Niet online
C:
1
2
3
4
for(i=0; i<RIJ; i++)
for(j=0; j<KOLOM; j++)
   fscanf(pnf, "%d" , tabel[i][j]);
printf("%d\t%", tabel[i][j]);

Wat stellen RIJ en KOLOM voor? Als dat het aantal rijen en kolommen is gaat die laatste printf verkeerd hier...

Verwijderd

Topicstarter
Dat is het aantal rijen en kolommen van mijn tekstbestand die ik in de 2d array wil zetten, maar die printf heb ik er al is uit gelaten omdat die later in het programma niet echt noodzakelijk is maar toen bleef ik hetzelfde probleem houden.

[ Voor 45% gewijzigd door Verwijderd op 05-07-2007 18:53 ]


  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 16:28

DataGhost

iPL dev

Alle variabelen (m.n. i en j) zijn ook fatsoenlijk geinitialiseerd? Voordat je de loops aanroept gebruik je ze namelijk al, waarom is me een raadsel zonder de rest van de code, maar ja. Het zou namelijk best kunnen dat de ene compiler ze op 0 initialiseert en de andere compiler dat niet doet (dwz de vorige waarde op dat geheugenadres gebruikt), hoewel ik niet zeker weet of dit ook ergens in een spec is vastgelegd. Anyway, als dat gebeurt kan het voorkomen dat je naar een foute index in je array wijst en daardoor een segfault krijgt.

  • G33rt
  • Registratie: Februari 2002
  • Laatst online: 22-06-2022
Wat dus vooral aan te raden is, is sowieso even je programma door een debugger heen te halen en kijken waar de segfault door komt. In gdb (de GNU debugger) kun je bijvoorbeeld het backtrace-commando proberen :)

[ Voor 3% gewijzigd door G33rt op 05-07-2007 20:14 ]


Verwijderd

Topicstarter
Bedankt, ik zal is een andere compiler gebruiken want in die van mij zit niet zo'n beste compiler

Edit: Ik bedoel de debugger die niet zo uitgebreid is :P

[ Voor 23% gewijzigd door Verwijderd op 06-07-2007 11:11 ]


Verwijderd

Verwijderd schreef op vrijdag 06 juli 2007 @ 10:55:
Bedankt, ik zal is een andere compiler gebruiken want in die van mij zit niet zo'n beste compiler
Rule number one: Don't blame the tools

;)

  • quistnet
  • Registratie: Januari 2001
  • Laatst online: 18-09-2020
post eens een groter deel van de code? de code in je eerste post kan geen een compiler goed compilen.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Als je nou eens begint met het daadwerkelijk beantwoorden van alle vragen in deze topic.

[ Voor 8% gewijzigd door .oisyn op 06-07-2007 11:19 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Punkie
  • Registratie: Oktober 2005
  • Laatst online: 07-11 20:36
De geheugen allocatie zal ander zijn als je het voor windows compileert. Daardoor treden er segfaults op die er voorheen niet waren onder linux omdat het daar, door eens stom toeval, wel op de juiste plaats stond.

Warm valgrind al maar op.

PS probeer de foute code eens geïsoleerd te draaien, construeer een klein testprog met enkel de nodige declaraties en het construct dat fout gaat. Als dit goed draait,dan is het niet rechtstreeks de fout.

  • pinwing
  • Registratie: November 2002
  • Laatst online: 19:34
Het lijkt mij sterk dat tabel[i][j] van het type int* zal zijn.
Zo ja, is het geheugen wel gealloceerd?
Zo nee, dan lijkt mij dat tabel[i][j] een int is en dat er een ampersand vergeten is bij de fscanf.

  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 19-10 00:17
Ik vind het wel ontzettend raar dat dit in linux goed werkt, sowieso zou je bij het compilen een warning moeten krijgen.

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
bobo1on1 schreef op vrijdag 06 juli 2007 @ 23:17:
Ik vind het wel ontzettend raar dat dit in linux goed werkt, sowieso zou je bij het compilen een warning moeten krijgen.
Het werkt in Linux ook niet goed, je hebt alleen nog niet gezien.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Idd. Volgens de standaard is het "undefined behaviour", wat betekent dat alles kan gebeuren - het kan goed gaan, maar het is net zo goed (theoretisch ;)) mogelijk dat je hdd wordt geformatteerd.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1