ricardoneves93 Posted April 15, 2013 at 08:30 AM Report #503208 Posted April 15, 2013 at 08:30 AM (edited) Bom dia, estou a ter o seguinte problema, quero copiar para cada posição de 2 arrays que estão como variáveis globais, uma data de modificação de um dado ficheiro dentro de uma directorio(FileData), e o nome desse mesmo ficheiro(FileName), porém existe o seguinte problema, antes de copiar para o array FileData a data correspondente estou a fazer um printf, esse printf está a dar valores correctos, porém quando copio esses valores para o array FileData, e de seguida faço um printf do seu conteudo, o conteudo é o mesmo em todas as posições, sendo este a ultima data do ultimo ficheiro a ser monitorizado. O que a função recebe é um directorio de uma pasta. Obrigado pela disponibilidade. char *FileName[1000]; char *FileDate[1000]; void updateInfo(char *initFolder) { DIR *srcFolder; struct dirent *content; struct stat st; char tempDate[26]; int numberFiles = 0; int i; srcFolder = opendir(initFolder); if (srcFolder==NULL) { printf("BAD OPENDIR %s\n",initFolder); } while ((content = readdir(srcFolder))!=NULL) { chdir(initFolder); stat(initFolder,&st); if (stat(content->d_name,&st)<0) { printf("BAD STAT\n"); } if (S_ISREG(st.st_mode)) //IT's A REGULAR FILE { strftime(tempDate, sizeof tempDate, "%Y_%m_%d_%H_%M_%S", localtime(&st.st_mtime)); printf("------>%s\n", tempDate); printf("------>%s\n", content->d_name); FileDate[numberFiles] = tempDate; FileName[numberFiles] = content->d_name; //printf("<------%d\n", numberFiles); numberFiles++; } } for(i = 0; i<10000; i++) { printf("%s\n", FileName[i]); printf("%s\n", FileDate[i]); if(FileName[i+1] == NULL && FileDate[i+1] == NULL) break; } } Exemplo de saida: ------>2013_04_11_23_14_14 ------>arroz~ ------>2012_12_05_13_59_25 ------>02 - My Gun Go Off.mp3 ------>2011_03_15_17_44_14 ------>01 - Intro.mp3 ------>2013_04_14_18_23_38 ------>Ficheiro3 ------>2013_04_11_23_14_10 ------>Ficheiro2 ------>2013_04_11_23_14_10 ------>Massa~ ------>2013_04_14_00_04_14 ------>Ficheiro4 ------>2013_04_15_00_27_26 ------>teste ------>2013_04_13_23_31_18 ------>Ficheiro1c arroz~ 2013_04_13_23_31_18 02 - My Gun Go Off.mp3 2013_04_13_23_31_18 01 - Intro.mp3 2013_04_13_23_31_18 Ficheiro3 2013_04_13_23_31_18 Ficheiro2 2013_04_13_23_31_18 Massa~ 2013_04_13_23_31_18 Ficheiro4 2013_04_13_23_31_18 teste 2013_04_13_23_31_18 Ficheiro1c 2013_04_13_23_31_18 Edited April 15, 2013 at 08:32 AM by ricardoneves93 http://www.speedtest.net/result/2682095343.png
HappyHippyHippo Posted April 15, 2013 at 10:30 AM Report #503217 Posted April 15, 2013 at 10:30 AM tens arrays de ponteiros para chars, estás a alocar memória para guardar as strings ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ricardoneves93 Posted April 15, 2013 at 10:39 AM Author Report #503218 Posted April 15, 2013 at 10:39 AM pois, não estou a fazer isso! Como é que devo alocar? usando o malloc()? http://www.speedtest.net/result/2682095343.png
HappyHippyHippo Posted April 15, 2013 at 10:46 AM Report #503220 Posted April 15, 2013 at 10:46 AM pelo modelo de código apresentado, sim IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ricardoneves93 Posted April 16, 2013 at 08:46 AM Author Report #503339 Posted April 16, 2013 at 08:46 AM pelo modelo de código apresentado, sim Mas como é que sei o numero de bytes que tenho de alocar? E por que razão só está a guardar a ultima data? Será por só ter espaço para uma data e elas vão-se consecutivamente substituindo umas ás outras? http://www.speedtest.net/result/2682095343.png
HappyHippyHippo Posted April 16, 2013 at 10:15 AM Report #503347 Posted April 16, 2013 at 10:15 AM (edited) Mas como é que sei o numero de bytes que tenho de alocar? pelos exemplos que apresentaste, necessitas de 20 bytes (19 para os caracteres e 1 para o '\0' final) E por que razão só está a guardar a ultima data? Será por só ter espaço para uma data e elas vão-se consecutivamente substituindo umas ás outras? porque estás a guardar um ponteiro sempre para a mesma posição de memória. FileDate[numberFiles] = tempDate; FileName[numberFiles] = content->d_name; Edited April 16, 2013 at 10:18 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ricardoneves93 Posted April 18, 2013 at 02:20 PM Author Report #503814 Posted April 18, 2013 at 02:20 PM Já resolvi o problema, Obrigado 😉 http://www.speedtest.net/result/2682095343.png
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now