2013-10-05 61 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串并因为长期没有初始化你不知道什么是印刷