automatisch meerdere bestanden laten inlezen in Visual C++

Status
Niet open voor verdere reacties.

m0316673

Nieuwe gebruiker
Lid geworden
31 mrt 2007
Berichten
4
Hallo,

In het kader van mijn thesis moet ik een onderzoek doen en wil ik graag bestanden automatisch laten openen en inlezen. Het lukt me wel om 1 bestand te openen, maar voor meerdere bestanden lukt het niet. De bestanden zijn genaamd: 1.TSP,....,30.TSP
Code:
void main () 
{	char r=0;
	double elapsed_time, start_time; 
	start_time=0;
       for(r=1;r<=30;r++)    //met het for-statemen wou ik 30 bestanden laten inlezen
       {	                    //de 'r' staat voor het eerste deel van de naam van het bestand
	input ();    //hier wil ik automatisch bestanden openen
	start_time= clock();
	procedure ();    //hier komt het eigelijk programma voor mijn onderzoek
	elapsed_time = (float) (clock() - start_time)/CLK_TCK;
	output ();
	printf ("\n	Computation time: %.2f seconds\n", elapsed_time);		//hier geefthij de tijd dat het programma open staat
      }
	getch (); return;
}

void input (void)
{	int i,j,t; 
	char filename[20]; 
	char r;
	FILE *fp;
	filename=r;
	strcat (filename, ".tsp"); 	// voeg aan 'filename' de tekens '.tsp' toe
	fp = fopen (filename, "r"); // open het bestand 'filename' om te lezen ('r' van read)
	if (fp==NULL) {printf ("No such file\n\n"); return;}	
.....//hier heb ik een aantal niet-relevante zaken weggelaten		
                fclose (fp); return;
}

void procedure (void)
{}

void output (void)
{}

Het zou fantastisch zijn als iemand me hiermee kon helpen. Bedankt.

Grtz, Wouter
 
Laatst bewerkt:
kan je die eens eventjes in een CODEBLOCK zetten, want zo is het niet echt overzichtelijk...

Code:
zo dus
 
Hieronder heb ik de source code voor een programma dat 50 files opened en wat in weg schrijft. Dit kun je wel aanpassen naar je eigen behoefte. (dat is toch de bedoeling van een thesis ;-) ).

Veel succes,
Boldyman
http://www.nextdawn.nl

Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#define MAX_FILES 50

int openArrayFile( FILE** pFilesArray, const int index, const char* fileName, const char* openMode )
{
    char* pHelloWorld = "Hello, World!\n";
    int rc = (index >= MAX_FILES ) ? -1 : 0;
    if( !rc )
    {
	pFilesArray[index] = fopen( fileName, openMode );
	if( !pFilesArray[index] )
	{
	    rc = errno;
	}
	fwrite( pHelloWorld, strlen( pHelloWorld ), 1, pFilesArray[index] );
    }
    return rc;
}

int closeArrayFile( FILE** pFilesArray, const int index )
{
    int rc = (index >= MAX_FILES ) ? -1 : 0;
    if( !rc )
    {
	if( !pFilesArray[index] )
	{
	    rc = ERANGE;
	}
	else
	{
	    rc = fclose( pFilesArray[index] );
	    if( rc )
	    {
		rc = errno;
	    }
	    else
	    {
		pFilesArray[index] = 0;
	    }
	}
    }
    return rc;
}

int main()
{
    int rc = 0;
    int i = 0;
    char filenameBase[16] = {0};
    FILE** pFilesArray = (FILE**)calloc( sizeof( FILE*), MAX_FILES );
    if( pFilesArray != NULL )
    {
        for( i = 1; i < 1+ MAX_FILES; i++ )
        {
        	if( i > 999 )
        	{
        	    rc = ERANGE;
        	    break;
        	}
        	else if( i < 10 )
        	{
        	    sprintf( filenameBase, "result00%d", i );
        	}
        	else if( i < 100 )
        	{
        	    sprintf( filenameBase, "result0%d", i );
        	}
        	else
        	{
        	    sprintf( filenameBase, "result%d", i );
        	}
        	rc = openArrayFile( pFilesArray, -1 + i, filenameBase, "w" );
        	if( rc )
        	{
        	    break;
        	}
        	else
        	{
        	    rc = closeArrayFile( pFilesArray, -1 + i );
        	    if( rc )
        	    {
        		break;
        	    }
        	}
        }
        free( pFilesArray );
    }
    else
    {
        rc = errno;
    }
    return rc;
}
 
Hieronder heb ik de source code voor een programma dat 50 files opened en wat in weg schrijft. Dit kun je wel aanpassen naar je eigen behoefte. (dat is toch de bedoeling van een thesis ;-) ).

Veel succes,
Boldyman
http://www.nextdawn.nl

Bedankt voor je reactie.
Ik snap eerlijk gezegd niks van je code. Mijn kennis van C++ is heel beperkt. Daarom zou ik liever verder bouwen op de code die ik reeds heb.
Ik wil dus eigenlijk for(r=1;r<=30;r++) aan het int r het deel ".TSP" toevoegen zodat ik 1.TSP .... 30.TSP bekom die mijn bestanden voorstellen. Deze wil ik dan openen.
Als iemand een idee heeft, laat het gerust horen.

Bedankt, Wouter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan