2012-02-03 99 views
1

我對C完全陌生,需要幫助。我使用fopen()讀取文件,然後使用fgetc()獲取它的內容。我想知道的是,如何我可以訪問該行fgetc()返回,所以如果我可以將第4至第8個字符放入char數組中。下面是我在網上找到的一個例子,但我很難分析數據返回,但我仍然沒有對C的堅定理解,也不知道int如何被用來存儲一行字符。如何讀取C文件並將字符存儲在變量中

FILE *fr; 
fr = fopen("elapsed.txt", "r"); 
int n = fgetc(fr); 
    while(n!= EOF){ 
     printf("%c", n); 
     n = fgetc(fr); 
    } printf("\n"); 
+0

您想將此文件數據存儲在一個字符指針中? – user1089679 2012-02-03 06:30:27

回答

1

你沒有檢索功能的結果與fgetc一行。您一次從文件中檢索一個字符。該示例繼續檢索字符,直到EOF字符被記錄(文件結束)。看看這個fgetc的描述。

http://www.cplusplus.com/reference/clibrary/cstdio/fgetc/

在while循環的每次迭代中,龜etc將檢索的單個字符,並將其放置到變量「n」。在C語言中可以幫助你處理「字符」的東西就是把它看作一個字節,而不是一個實際的字符。你在這裏不理解的是int是4個字節,字符是1個字節,但是它們都可以爲相同的ASCII字符存儲相同的位模式。唯一不同的是內部變量的大小。

上面的示例顯示了帶有「%c」的printf,這意味着將值「n」並將其視爲ASCII字符。

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

您可以使用計數器在while循環中保持跟蹤你的位置,找到該文件中的第4,8值。您還應該考慮如果輸入文件小於最大尺寸會發生什麼情況。

希望有所幫助。

0

好看看它的箱子尺寸我可以有一個30釐米x 30釐米的箱子,可以容納我有1個泡沫字母。現在我所說的函數可以返回一個60釐米x 60釐米的字母,但99%的字母可能會返回30釐米x 30釐米的字母,因爲我知道它的讀數 - 我知道如果我給它一個60釐米x 60釐米的盒子,結果將永遠適合沒有驚喜。

但是,如果我相信結果將永遠是一個30釐米×30釐米框,然後我知道我可以轉換返回AA60釐米X60釐米箱沒有失去任何東西

+0

不幸的是,這對我沒有任何幫助 – zafrani 2012-02-03 05:28:32

+0

他的觀點是隻有'fgetc'可以返回那個不是有效的字符'EOF',並且你已經知道它不是'EOF'因爲你測試了它。 – 2012-02-03 05:31:34

+0

此外,你正在逐個字符得到一個文件字符,所以術語「線」如何相關 – 2012-02-03 05:36:22

3

這裏 1首先打開文件 的文件 2 GET尺寸3分配大小字符指針 4,並從文件中讀取數據

FILE *fr; 
char *message; 
fr = fopen("elapsed.txt", "r"); 
/*create variable of stat*/ 
struct stat stp = { 0 }; 
/*These functions return information about a file. No permissions are required on the file itself*/ 
stat("elapsed.txt", &stp); 
/*determine the size of data which is in file*/ 
int filesize = stp.st_size; 
/*allocates the address to the message pointer and allocates memory*/ 
message = (char *) malloc(sizeof(char) * filesize); 
if (fread(message, 1, filesize - 1, fr) == -1) { 
    printf("\nerror in reading\n"); 
    /**close the read file*/ 
    fclose(fr); 
    /*free input string*/ 
    free(message); 
} 
printf("\n\tEntered Message for Encode is = %s", message); 

PS不要忘記添加#include <sys/stat.h>

+0

@David你試試這個嗎? – user1089679 2012-02-03 06:38:52

相關問題