如何从文件函数中进行工作读取?

时间:2013-04-05 16:33:52

标签: c

int main()
{
    char a[100][100];
    int i = 0, k = 0;
    FILE* file = fopen( "A:/input.txt", "r" );
    if( file == NULL ){
        perror( "Error opening file !\n" );
    } else {
        while( ! feof( file )){
            fscanf( file, "%d;%s\n", &i, a[i] );
        }
    }
    for( ; k < i; ++k ){
        printf( "%d -> %s\n", k, a[k] );
    }
    return 0;
}

我有这段代码,我试图将它实现为这样的函数:

int reader(char b[20], char *a[100][100], int *i){
    int j = 0;
    FILE* file = fopen(b, "r" );
    if( file == NULL ){
        perror( "Error opening file !\n" );
    } else {
        while( ! feof( file )){
            fscanf( file, "%d;%s\n", j, a[j] );
        }
    }
*i = j;
return 0;}

并从主电话打来电话:

char a[100][100];
int i = 0;
reader("Type.txt", &a, &i);

但是当我使用该函数时,代码在fscanf调用时崩溃。 任何想法我如何使这项工作或如何创建一个从文件中逐行读取并以这种形式创建数组的函数:array [0] = firstline,array [1] = secondline,etc。

2 个答案:

答案 0 :(得分:1)

您在main()函数中使用变量i正确地执行了此操作,但是当您将其移动到函数时,您忘记了符号。您需要将j的地址传递给fscanf()

fscanf( file, "%d;%s\n", &j, a[j] );

答案 1 :(得分:1)

首先,您必须在此行中将&添加到j

fscanf( file, "%d;%s\n", j, a[j] );

应该是

fscanf( file, "%d;%s\n", &j, a[j] );

该函数的输入数组也不应包含星号*

int reader(char b[20], char a[100][100], int *i){