2014-09-06 68 views
-3

我想逐行讀取文本行,看一些例子後函數返回數組,我決定使用malloc方法,但是我不斷收到錯誤從使用malloc

error: subscript of pointer to function type 
     'void *(unsigned long)'" 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

char *readFile(char filename[]) 
{ 
    char line[100]; 
    char *list = malloc(100); //causes error... 
    int i = 0; 

    FILE  *file = fopen(filename, "r"); 

    while (fgets (line, sizeof line, file)!= NULL) 
    { 
     list[i] = line; 
     i++; 
    } 
    return list; 
} 

int main(int argc, char *argv[]) 
{ 
char *p = readFile(argv[1]);  
for (int i = 0; i<10; i++) 
    { 
     printf("%s", list[i]); 
    } 
    return 0; 
} 

基本上我有一個任務來檢查有4列的文本文件,我試圖將每行存儲到一個數組中,然後使用strtok將每行分成4個令牌。然後我會將每個標記存儲到一個單獨的數組中(以便每列都是一個數組)。然後我會遍歷每個數組並執行所需的操作。但是,我真的堅持這一步。

+1

'list [i] = line;'不是你想要的。你的編譯器也應該警告你。 – mch 2014-09-06 11:50:45

+0

@Kerrek - Stack Overflow歡迎發燒友程序員。也許[我們可以請新用戶好一點嗎?](https://meta.stackexchange.com/questions/9953/could-we-please-be-a-bit-nicer-to-new-users)會適用於此? – jww 2014-09-06 12:36:29

+1

@jww:I * do *歡迎新的發燒友用戶。認真。 – 2014-09-06 13:48:03

回答

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

char **readFile(char filename[]){ 
    char line[100]; 
    char **list = malloc(100*sizeof(char*));//for 100 lines 
    int i = 0; 

    FILE *file = fopen(filename, "r"); 

    while (fgets (line, sizeof line, file)!= NULL && i < 100){ 
     list[i] = malloc(strlen(line) + 1); 
     strcpy(list[i], line); 
     ++i; 
    } 
    fclose(file); 
    return list; 
} 

int main(int argc, char *argv[]){ 
    char **list = readFile(argv[1]); 
    for (int i = 0; i<10; i++){ 
     printf("%s", list[i]); 
    } 
    //deallcate list[i], list 
    return 0; 
} 
+0

我的課程中還沒有看到任何帶'**'的東西(假設是另一種類型的指針?),我會看看這是爲什麼。哦,我也把指針放入列表中,這就是爲什麼你使用strcpy ...謝謝... 我該如何獎勵你幫助我?我不能upvote你(需要15聲望) – caha11 2014-09-06 12:10:06

+0

@ caha11'char **'是指向'char'的指針。如果char * list [i]然後'list [n] = line':並不意味着通過複製'line'的相同指針來複制內容。 – BLUEPIXY 2014-09-06 12:16:42

+0

是的,我瞭解男人,非常感謝。 我從字面上花了很長時間沒有進步,這有很大幫助。我是新來的這個網站,我怎麼給你代表?或者我能做些什麼來獎勵你幫助我 – caha11 2014-09-06 12:25:19