0
我需要循環槽目錄,data
和讀取每個文件,滿足一定的條件下,在一個字符串,用它做什麼。出於某種原因,它的fseek
呼叫失敗後(輸出目錄中的第一個文件的唯一名稱)。FSEEK()和FTELL()在一個循環中失敗
任何想法,我究竟做錯了什麼?
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
void doAlgorithm(char *input) {
printf("%s\n", input);
}
int main(int argc, char** argv) {
struct dirent *dir;
DIR *d = opendir("data");
FILE *file;
while ((dir = readdir(d)) != NULL) {
if (strlen(dir->d_name) > 6 && dir->d_name[6] == 'i') {
printf("Filename: %s\n", dir->d_name);
file = fopen(dir->d_name, "r");
fseek(file, 0, SEEK_END);
long length = ftell(file);
fseek(file, 0, SEEK_SET);
printf(", Filesize: %ld\n", length);
char *buffer = malloc(length + 1);
fread(buffer, 1, length, file);
buffer[length] = '\0';
fclose(file);
doAlgorithm(buffer);
}
}
closedir(d);
return (EXIT_SUCCESS);
}
'ftell'返回'long' int太小 –
你也無法檢查返回值到處都是。僅僅因爲你要求「長度」字節並不意味着你拿到了它們。 – ShadowRanger
確定我固定的,但它仍然不會改變任何東西,程序仍不能正常的FSEEK()調用後工作。順便說一句,我在Windows上運行它,如果它很重要。 –