strcpy...eventuell problem des visual studio compiler..



  • hi leute!
    warum treten bei mir exceptions beim strpy auf...hab visual studio net 2003...bei einem freund der es nicht hatte lieft der code problemlos...check ich nicht ganz..!? in der textdatei stehen nur 10 zeilen..also 1000 für buffer2 reicht sicher aus!

    cu

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <malloc.h>
    #include <iostream>
    
    template<class T>
    
    void WaitForReturn(T& stream)
    {
    	stream.clear();
    	stream.ignore(stream.rdbuf()->in_avail());
    	stream.get();
    }
    
    int main() 
    { 
                FILE *fz; 
                char *buffer = NULL; 
    	   char buffer2[1000];
    	   memset(&buffer2, 0, sizeof(buffer2));
                int iFileSize; 
    
                fz = fopen("text1.txt", "rb"); 
                if(fz != NULL) 
                { 
                    fseek(fz, 0, SEEK_END); 
                    iFileSize = ftell(fz); 
                    buffer = (char *)malloc(iFileSize+1);  
    
                    fseek(fz, 0, SEEK_SET); 
                    fread(buffer, 1, iFileSize, fz); 
                    fclose(fz); 
    	       buffer[iFileSize++] = '\0';
    
    	       char *buffer2 = (char*)malloc(iFileSize+1);
    
    	       strcpy(buffer2, buffer);
    
    	       std::cout << buffer2 << std::endl;
    
    	       delete [] buffer;
    
                } 
    
    	   WaitForReturn(std::cin);
    }
    


  • sorry
    das muss noch raus:
    char *buffer2 = (char*)malloc(iFileSize+1);
    !!!

    cu



  • krispi schrieb:

    in der textdatei stehen nur 10 zeilen..also 1000 für buffer2 reicht sicher aus!

    Die Anzahl der Zeilen ist doch egal. Es dürfen nicht mehr als 999 Zeichen sein. Lass dir doch iFileSize mal ausgeben.

    malloc und delete zusammen zu verwenden, ist falsch.

    C ist dein Code auch nicht.



  • wenn du C++ programmierst, dann verwende auch die C++ Speicher-Elementen. D.h. benutze new und delete und am besten sogar std::string, damit wirst du keine Probleme haben, mische C und C++, das geht fast immer ins Auge.


Anmelden zum Antworten