0

例: 私はいくつかのテキストを含むファイルを持っています..ような

my name is sunny
i am a student

ファイルから読み込んで保存したいのですが、

a[0][0]=my,a[0][1]=name,a[0][2]=is,a[0][3]=sunny,

a[1][0]=i,a[1][1]=am,a[1][2]=a,a[1][3].

どうすればいいですか?前もって感謝します。

4

3 に答える 3

1

fgets を使用して、テキストの各行を読み取ることができます。a読み取る行ごとに、最初の次元 (行)にアクセスするために使用するカウンターをインクリメントします。そして、読み取り行ごとに strtok を使用して、行内のすべてのトークンを反復処理します。strtok が返すトークンごとに、ポインターをa[i][j]インクリメントに関連付ける必要がありますj

もちろん、achar マトリスへのポインタです。

于 2012-10-10T19:31:20.413 に答える
0

私はそれをテストしていません。それはそれを行う方法の単なる例です。

/* not real value; see limits.h header if you are in POSIX or equivalento to your env */
#define LINE_MAX 128
char line[LINE_MAX + 1];
char contents[MAX_LINES][MAX_WORDS];
char * token;
/* read file line by line */
while(fgets(line, LINE_MAX, fp) != NULL) {
 /* split words by white-space */
 token = strtok(buffer, " ");
 while(token != NULL) {
   // token is "my", after "name" and and so on.
   // store it into contents array. you can use strcpy() or strncpy() (more safe) 
 }
}
于 2012-10-10T20:34:56.540 に答える
0

さて、私はあなたにいくつかの手がかりを与えるつもりです。

最初に次のように宣言 a します

char a[2][3];

この変数は次のように使用できます。

int main()
{
   char a[2][3];

   a[1][1]='a';
   printf("%c",a[1][1]);

}

次に、を使用 fscanf(f, "%c", a[][]); してファイルから読み取ります。これについては、インターネットチュートリアルとマニュアルページを参照してください。

他のオプションは、それを動的に行うことです。

次のように宣言 a します。

char **a;

その後、次のようにメモリを割り当てます。

a = (char**)malloc(2 * sizeof(char*));  //Two times the size of char

これで最初の配列のメモリができたので、配列の各スペースに別の配列を「挿入」します。マトリックスのように考えてください。

for(i=0; i<3; i++)
    a[i] = (char*)malloc(3 * sizeof(char));

これはあなたにあなたのマトリックスを与えます。最初のケースのように使用してください。

質問の場合は文字列を読み取るので、charの代わりにこの構造体で同じことを試してください

typedef struct string {
    char cadena[6];
}myString;

幸運を!

于 2012-10-10T19:49:39.090 に答える