fgets() stopt na bepaald karater

  • Onderwerp starter Onderwerp starter arre
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

arre

Gebruiker
Lid geworden
14 apr 2003
Berichten
485
Hey iedereen,

Ik zeg alvorens maar dat ik op dit gebied een grote beginneling ben:) Dus sorry voor domme vragen

Anyway, ik zit dus met een probleempje:
Ik ben bezig aan een decryptortje in C(++). Het leest een file uit, en via een algoritme vormt hij de gecodeerde taal om naar wat het moet zijn. Nu wat mij het moeilijkste leek, het decoderen, werkt perfect. Het is me gelukt een werkende decoder te maken, maar alleen bij kleinere files. Wanneer ik een grote file probeer in te lezen geeft hij een outputfile die eindigt na ongeveer 200 karakters, verschillend bij elke file.

Nu, ik heb het probleem al kunnen tracen tot het uitlezen van mijn file. Ik gebruik namelijk de volgende code:
Code:
                        FILE *fp;   /* file pointer */
		if ((fp = fopen(aesc.inputfile, "r"))==NULL){
		  printf("Couldn't Read %s \nQuitting...\n\n",aesc.inputfile);
		  exit(1);
		}

		
		fgets(aesc.hash,600000,fp);
		

		printf("Found Hash:\n\n%s\n\n",aesc.hash);

Hierbij is aesc.inputfile bijvoorbeeld 'tmp.txt'.aesc.hash is gedefineerd als 'char hash[600000]'

Wat ik denk dat er scheelt is dat hij gewoon, netzoals je fgets bij line-feeds kunt gebruiken in de console, hij stopt met lezen als hij een 'stop karakter' tegen komt. Nu, ik zou graag willen dat hij niet stopt:) en de hele file uitleest totdat hij gewoon end-of-file tegenkomt.

This is where you come in!:) Als jij iets weet dat die fgets kan doen lezen totdat hij de hele file uitheeft, of een andere functie kent die niet kampt met zo'n problemen, plz tell me!:D

Thnx in advance,

Arre
 
Dat ga ik dan maar eens proberen, aangezien de enorme hoeveelheid aan reacties mij niet doet twijfelen.
 
fstream blijkt wel handiger te zijn. Ik kan ermee binair bestanden lezen. Ik heb de code getweaked tot:

Code:
		ifstream inpfile;
		inpfile.open (aesc.inputfile, ios::in|ios::binary|ios::ate);
		if(!(inpfile.is_open())){
		  printf("Couldn't Read %s \nQuitting...\n\n",aesc.inputfile);
		  exit(1);		
		}

		/* read content */
		int size;
		size = (int)inpfile.tellg();
		aesc.hash = new char [size];
		buffer = new char [size];
		inpfile.seekg (0, ios::beg);
		inpfile.read (aesc.hash, size);


		printf("> Found Hash: %d Characters\n",size);
		inpfile.close();

En dit blijkt prachtig te werken,

Bedankt voor je reactie,
Opgelost
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan