2014-11-16 31 views
0

當文件寫入「test1」時,爲什麼我的程序返回了9? 程序查找文件中的字符數。我想跑掉'while(fgetc(file)!= EOF)'方法,但這似乎不起作用。C文件上的字符數

我希望對此有所幫助。謝謝

#include <stdio.h> 
#include <stdlib.h> 

#define FORMATLOG "FORMAT ERROR: invalid parameter: s5e4 <filename.txt>" 
#define TXFILELOG "FILE ERROR: Can't open file or file does not exist" 

enum { true, false }; 


int interface(char *filename) { 

    FILE *f_text = fopen(filename, "r+"); 
    size_t size; 
    char c; 

    if(f_text == NULL) { 
     puts(TXFILELOG); 
     return NULL; 
    } 

    fseek(f_text, 0, SEEK_END); 
    size_t length = (size_t) ftell(f_text); 

    printf("%d", length); 

    fclose(f_text); 

    return true; 
} 


int main(int argc, char **argv) { 

    if(argc != 2) { 
     puts(FORMATLOG); 
     return false; 
    } 

    return interface(argv[1]); 
} 
+1

的9包括其他字符,如換行和回車。 ls -l表示文件的大小是多少? – DanielGibbs

+0

在十六進制編輯器中打開文件,檢查換行符等 –

+0

一般來說,這一行:enum {true,false};因爲通常false爲0,所以行應該是enum {false,true};函數'interface'中的 – user3629249

回答

0

爲什麼併發症?

http://linux.die.net/man/2/stat

#include <sys/types.h> 
#include <sys/stat.h> 
#include <unistd.h> 
#include <stdio.h> 

int main() 
{ 
    struct stat buf; 
    stat("filename", &buf); 
    printf("Size:%d\n", buf.st_size); 
    return 0; 
} 

(哎呀錯過了錯誤檢查,但我猜你的圖片)

+1

這是便攜式? – user3050910

+0

POSIX。有一個Windows版本。 http://msdn.microsoft.com/en-gb/library/windows/desktop/aa364957%28v=vs.85%29.aspx - 不確定關於VAX或ZX81 –

+0

@ user3050910它不是可移植的由fseek 。 – BLUEPIXY