0
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;}

并从 main 拨打电话:

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

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

4

2 回答 2

1

你在你的main()函数中使用变量正确地做到了i,但是当你把它移到一个函数时你忘记了一个符号。您需要将地址传递jfscanf()

fscanf( file, "%d;%s\n", &j, a[j] );
于 2013-04-05T16:35:36.533 回答
1

首先,您必须在此行中添加&toj

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){
于 2013-04-05T16:40:03.757 回答