0

テキストファイルに次の2行があります

4

oxd||987||ius||jjk

データを 2 次元の char 配列に格納したいと考えています。最初の行は基本的に配列の行数を表し、配列の列が 3 に固定されていると仮定します。データは に基づいて分割されます||

では、どうすればそのような動的配列を宣言できますか。

4

1 に答える 1

0

C では問題ありません。VLA があります。何かのようなもの:

fgets(buf, sizeof buf, stdin);
int rows = strtol(buf, NULL, 0);

行数を取得するには、次のようにします。

char array[rows][3];

これで完了です。これは、入力が与えられた場合の使用方法を示す完全な (エラー チェックなしの) 例です。

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

int main(void)
{
    char buf[100];
    fgets(buf, sizeof buf, stdin);

    int rows = strtol(buf, NULL, 0);
    char array[rows][3];

    fgets(buf, sizeof buf, stdin);

    char *s = strtok(buf, "|");
    for (int i = 0; i < rows; i++)
    {
        strncpy(array[i], s, 3);
        s = strtok(NULL, "|");
    }

    for (int i = 0; i < rows; i++)
    {
        printf("%.3s\n", array[i]);
    }

    return 0;
}

実行例と出力:

$ make example
cc     example.c   -o example
$ ./example < input
oxd
987
ius
jjk
于 2013-10-30T05:05:42.630 に答える