FILE *Stream in einen Array einlesen



  • Sieht doch eigenlich richtig aus. Gibts die Sourcedatei überhaupt?
    Swordfish hat doch schön ausführliche Fehlermeldungen eingebaut;
    was gibt dein Programm denn für ein Fehler aus?

    elturco schrieb:

    Ich habe das hier eingefuegt:

    argv[1]= "C:\\Ahnung.as" ;
    argv[2]= "C:\\Resul.as" ;
    

    Oder könnte es sein, daß du zwar die beiden Zeilen eingefügt hast,
    argc aber nicht verändert hast und nachwievor 0 ist?

    Auch wird mit einem

    argv[1]= "C:\\Ahnung.as" ;
    

    Speicher beschrieben der vielleicht gar nicht existiert, falls
    die Länge von argv nur 1 ist (Nur der Programmname).

    Starte das Programm doch einfach mit Übergabe der Dateinamen.

    Achtung: In diesem Fall darfst du den Backslash nicht escapen.

    meinProgramm C:\Ahnung.as C:\Result.as
    


  • wenn du dein programm nicht aus der kommandozeile heraus bedienst, dann oeffne doch einfach mit:

    FILE *input = fopen("die_datei_die_du_willst", "rt" );

    argc gibt an wie viele parameter deinem programm uebergeben werden und argv die parameter...

    btw: um strings in andere strings zu kopieren benutze strcpy und nicht einfach den wert zuweisen...



  • argc aber nicht verändert hast und nachwievor 0 ist?

    argc ist auf 1 gesetzt...

    das Programm wird irgendwie nicht ausgeführt, bekomme auch nicht irgendeine Ausgabe mit "Datei konnte nicht geöffnet werden"
    Habt Ihr das selbst mal ausprobiert ?

    @Moh ich habe es auch so versucht wie Du es beschrieben hast mit "FILE *input....

    keine Fehlermeldung aber auf die Dateien sowohl Input als auch Output wird nicht zugegriffen



  • 🙂 klar, dummer fehler von mir, argc auf 1 setzen bringt ja auch nichts, mit 3 geht es besser...

    Ja es läuft jetzt danke euch, habt mir viel geholfen, echt cool von euch



  • Noch eine Schlussbemerkung, was ist die Bedeutung von argc ? ich mein das kann man auch im Grunde genommen auch weglassen ?
    Swordfish hat sich bestimmt was dabei gedacht klar, aber ich habe da irgendwie keine Bedeutung gesehen...



  • argc ist die anzahl der übergebenen parameter über die komandozeileneingaben also sozusagen die anzahl der elemnte von argv



  • du liest meine beitraege gar nicht erst, oder??? 😡



  • @Moh ich lese schon Deine Beiträge Moh, ich war ein wenig voreilig mit der Frage 🙂

    Danke euch nochmal 🙂



  • Hallo zusammen nochmal,

    hat einer ne Idee, wie ich den Code "zusammenruecken" kann, also ich moechte die frei gewordene Flaeche der geloeschten Kommentare zusammenruecken.

    Ich habe mir folgendes ueberlegt, eine weitere while Schleife einbauen und mit der Methode gets vergleichen, ob es sich um eine leere Zeile handelt.

    Ich habe mich fuer gets entschieden, weil damit Zeilenweise gelesen wird und nicht Zeichenweise.

    Was haltet Ihr davon ?



  • Bei meiner Version werden die Kommentare ( // sonstwas, /* nochwas */ ) entfern -> es bleiben weder Whitespaces noch leere Zeilen zurück.
    Falls du mit einem anderen Source arbeitest, dann poste ihn.

    Greetz, Swordfish



  • Danke Dir Swordfish.

    Ich benutze aber Deine Version, nur dass ich nicht ueber die Kommandozeile arbeite. Habe deshalb argc direkt mit 3 initialisiert. Aber die Whitespaces und die leeren Zeichen konnten nicht geloescht werden, in welchem Teil des Programms wird das gemacht Swordfish ?



  • char *first = text;
    
    while( ( first = strstr( first, "//" ) ) ) {
    
        char *remove = first;
    
        if( first != text ) {
    
            if( *( first - 1 ) == '\n' )
                --first;
        }
    
        while( ( *remove != '\n' ) && ( *remove != '\0' ) )
            ++remove;
    
        strcpy( first, remove );
    }
    
    first = text;
    
    while( ( first = strstr( first, "/*" ) ) ) {
    
        char *remove = strstr( first, "*/" );
    
        if( !remove ) {
    
            printf( "Compouned statement \"*/\" missing!" );
            break;
        }
    
        strcpy( first, remove + 2 );
    }
    

    Zeig mal deine Eingabedatei und die daraus resultierende Ausgabedatei!

    Greetz, Swordfish



  • Die Eingabe ist:

    class Tuto {
    
    	static var app : Tuto;
    
    	function Tuto() {
    trace("yippi!");
    		// creates a 'tf' TextField size 800x600 at pos 0,0
    		_root.createTextField("tf",0,0,0,800,600);
    		// write some text into it
    		_root.tf.text = "Hello world !";
    trace("yippi!");
    	}
    	//sfsdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
    	//sdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	
    //yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    
    	/*hdhcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    	* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    	* ccccccccccccccccccccccccdddddddddddddd
    	* dddddddddddddddddddvvvvvvvvvvvv
    	*/
    
    	// entry point
    	static function main(mc) {
    trace("yippi!");
    		app = new Tuto();
    	}
    }
    

    Die Ausgabe dazu:

    class Tuto {
    
    	static var app : Tuto;
    
    	function Tuto() {
    trace("yippi!");
    
    		_root.createTextField("tf",0,0,0,800,600);
    
    		_root.tf.text = "Hello world !";
    trace("yippi!");
    	}
    
    	static function main(mc) {
    trace("yippi!");
    		app = new Tuto();
    	}
    }
    


  • Ach so, tschuldige, hab' ich übersehen:

    #include <ctype.h>
    
    // ...
    
    char *first = text;
    
    while( ( first = strstr( first, "//" ) ) ) {
    
        char *remove = first;
    
        while( ( first != text ) && isspace( *( first - 1 ) ) )
            first--;
    
        while( ( *remove != '\n' ) && ( *remove != '\0' ) )
            ++remove;
    
        if( remove[ 1 ] )
            if( remove[ 1 ] == '\n' )
                ++remove;
    
        strcpy( first, remove );
    }
    
    first = text;
    
    while( ( first = strstr( first, "/*" ) ) ) {
    
        char *remove = strstr( first, "*/" );
    
        if( !remove ) {
    
            printf( "Compouned statement \"*/\" missing!" );
            break;
        }
    
        strcpy( first, remove + 2 );
    }
    

    Greetz, Swordfish



  • Hey Swordfish danke Dir vielmals, echt nett von Dir...

    Kannst Du mir im uebrigen Tutorials empfehlen, die effizient auch ziemmlich effizient sind ?

    Gruesse und danke nochmal...



  • elturco schrieb:

    Kannst Du mir im uebrigen Tutorials empfehlen, die effizient auch ziemmlich effizient sind ?

    Johnny Walker Black Label? 😮

    So früh am Nachmittag? Geh' in die Ecke und schäm dich! 🕶





  • Ich benutze aber Deine Version, nur dass ich nicht ueber die Kommandozeile arbeite.Habe deshalb argc direkt mit 3 initialisiert.

    ist jetzt nicht fies gemeint, aber: du hast nichts verstanden, oder?



  • Moh schrieb:

    Ich benutze aber Deine Version, nur dass ich nicht ueber die Kommandozeile arbeite.Habe deshalb argc direkt mit 3 initialisiert.

    ist jetzt nicht fies gemeint, aber: du hast nichts verstanden, oder?

    Hä?

    Greetz, Swordfish




Anmelden zum Antworten