2013-10-05 59 views
0

數組這是我到目前爲止有:打印出我有麻煩試圖創建一個數組,然後打印從數組...前10個元素串

#include <stdio.h> 

int main() 

{ 
    char term[200][40]; 
    FILE *ifp; 
    int i; 
    ifp = fopen("terms.txt", "r"); 

    if (ifp == NULL){ 
    fprintf(stderr, "Could not open file...\n"); 
    } 

    fgets(term, 40, ifp); 

    for(i = 1; i < 11; i++) { 
    printf("%s", term[i-1]); 
    } 
} 

此外,編譯器給我一個錯誤: 「注:應爲 '字符* 限制',但參數的類型的 '字符(*)[40]'」

回答

0
char term[200][40]; 

是一個由200個字符串緩衝區組成的數組,可容納40個字符。

fgets(term, 40, ifp); 

嘗試讀取文件中的字符串,並將其存儲到緩衝區中的第一個參數點(預期char*)。

嘗試閱讀下列方式:

int i = 0; 
while (fgets(&term[i++][0], 40, ifp); 

fgets會在失敗時返回NULL使其停止。

1
fgets(term, 40, ifp); //THIS IS WRONG 

修改for循環和除去上面的語句

for(i = 1; i < 11 && fgets(term[i-1], 40, ifp)!=NULL ;i++) { 
printf("%s", term[i-1]); 
} 
0

這是因爲term作爲任何數組,當傳遞給函數時,被視爲指向其第一個元素的指針。
和期限的第一個元素是...的40個字符數組,所以你通過

char (*)[40]

fgets,並預計

char *

。順便說一句,你的編譯器告訴你我比我早得相同的東西。

0
fgets(term, 40, ifp); 

     for(i = 1; i < 11; i++) { 
     printf("%s", term[i-1]); 
     } 
在一段代碼上面你 ifp讀一個字符串,並將其存儲在 term但你嘗試讀取10串並因爲長期沒有初始化你不知道什麼是印刷