-1

私の関数の 1 つは、テキスト ファイルから行を読み取り、変数に格納します。メイン関数でその変数を使用する方法が必要です。いくつかの方法を試しましたが、何もうまくいきませんでした。誰でも私を助けることができますか?

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

int test(const char *fname, char **names){

    char usernames[250][50];
    FILE *infile;
    char buffer[BUFSIZ];
    int i =0;

    infile = fopen(fname, "r");


    while(fgets(buffer,50,infile)){
        strcpy(usernames[i],buffer);
        printf("%s",usernames[i]);
        i++;
    }

    int x, y;
    for(y = 0; y < 250; y++)
        for(x = 0; x < 50; x++)
            usernames[y][x] = names[y][x];

    return 0;
}


int main()
{
    char *names;
    test("test.txt", &names);
}

誰でも助けることができますか?私は長い間 C でコーディングしていません。

4

1 に答える 1

2

Cでは、呼び出し元は必要な文字列にメモリを割り当てる必要があります。そうしないと、誰がメモリを解放するのか誰にもわかりません。次に、それを設定する関数へのポインターを渡すことができます。

int main() {
    char names[250][50];
    test("test.txt", names);
    for (int i=0; i < 50; i++) {
        printf("File %d: %s", i, names[i], 250);
    }     
}


void test(const char *fname, char(*names)[50], int maxWords){

    FILE *infile;
    int i =0;
    char buffer[50];

    infile = fopen(fname, "r");

    while(fgets(buffer,50,infile) && i < maxWords){
        strcpy(usernames[i],names[i]);
        i++;
    }    
}
于 2013-03-11T22:47:45.937 に答える