Oppure

Loading
02/04/09 16:32
xeeynamo
Ho creato una funzione che in un percorso, ti ricava il nome del file, ad esempio se hai C:\lol\asd.txt, ti dà come valore di ritorno asd.txt. Il problema che si presenta però è particolarmente strano, perchè se prima del return faccio un printf che stampa almeno due caratteri, la variabile che ritornerà sarà corretta, se invece tolgo il printf, mi da strani caratteri alla fine :doubt:
Ecco il codice:
char *GetFileName(char *path){
    register int16 tSize=GetTextLong(path);
    register byte x=0;
    char FileName[255];
    for(int i=0;i<tSize;i++){
        if (path[i]=='\') x=i;
    }
    for(int i=x;i<tSize;i++){
        FileName[i-x]=path[i+1];
    }
    printf("  ");
    return FileName;
}

GetTextLong ha come valore di ritorno un intero che indica quanti caratteri ci sono in un array di char.
aaa
02/04/09 23:40
pierotofy
Prova a fare un flush dell'stdout prima di stampare il risultato.
Il mio blog: piero.dev
03/04/09 12:14
xeeynamo
Non sò cosa significhi fare il flush, ma facendo brevi ricerche su google ho trovato e provato ad usare l'istruzione fflush(stdout), ma senza successo...
#include <stdio.h>

int GetTextLong(char * text){
    register unsigned int r;
    for(r=0;r<0xFFFFFFFF;r++) if(text[r]=='Non sò cosa significhi fare il flush, ma facendo brevi ricerche su google ho trovato e provato ad usare l'istruzione fflush(stdout), ma senza successo...

#include <stdio.h>

int GetTextLong(char * text){
    register unsigned int r;
    for(r=0;r<0xFFFFFFFF;r++) if(text[r]=='{parsed_message}')  break;
    return r;
}

char *GetFileName(char *path){
    short int tSize=GetTextLong(path);
    char x=0;
    char FileName[255];
    for(int i=0;i<tSize;i++){
        if (path[i]=='\') x=i;
    }
    for(int i=x;i<tSize;i++){
        FileName[i-x]=path[i+1];
    }
    fflush(stdout);
    return FileName;
}

int main(){
    fflush(stdout);
    printf("%s",GetFileName("C:\windows\system32\rundll32.exe"));
}


Questo è il codice sorgente completo... Please, datemi una mano :(, ho anche altri problemi di questo tipo quando devo far ritornare un'array dinamico di char :(') break; return r; } char *GetFileName(char *path){ short int tSize=GetTextLong(path); char x=0; char FileName[255]; for(int i=0;i<tSize;i++){ if (path[i]=='\') x=i; } for(int i=x;i<tSize;i++){ FileName[i-x]=path[i+1]; } fflush(stdout); return FileName; } int main(){ fflush(stdout); printf("%s",GetFileName("C:\windows\system32\rundll32.exe")); }


Questo è il codice sorgente completo... Please, datemi una mano :(, ho anche altri problemi di questo tipo quando devo far ritornare un'array dinamico di char :(
aaa