お世話になります。
void setup(int n);
// 長さ n のデータ列を設定する
//nはコマンドラインから取得
char *getStr();
// setup で設定されたデータの列から次の文字列を1つ取り出して返してくる
// データの列が尽きているなら NULL を返してくる
という2つの関数があります。
getStrで取り出したデータを配列に入れていき、
今までと同じ文字列があったらカウントして、
結果、文字列は何種類あって、何個同じ文字列があったか
を出力したいと思っています。
取り急ぎ、文字列を配列に入れる方法を教えていただきたいです。
よろしくお願いします。
文字列を配列に入れる方法
Re: 文字列を配列に入れる方法
文字列のアドレスだけを配列に入れるやり方。yopi さんが書きました: ↑4年前取り急ぎ、文字列を配列に入れる方法を教えていただきたいです。
#include <stdio.h>
char *data[] = { "abc", "def", "ghi", "def" };
int ndata = sizeof(data) / sizeof(data[0]);
int idata = 0;
char *getStr() { return idata < ndata ? data[idata++] : NULL; }
#define SIZE 20 // 配列のサイズ
int main(void)
{
char *a[SIZE], *p;
int n;
for (n = 0; n < SIZE && (p = getStr()) != NULL; n++)
a[n] = p; // getStr で取得した文字列を配列 a に代入
for (int i = 0; i < n; i++) // 確認用
printf("%d: %s\n", i, a[i]); // 配列 a の内容を表示
}
#include <stdio.h>
#include <string.h> // strcpy
char *data[] = { "abc", "def", "ghi", "def" };
int ndata = sizeof(data) / sizeof(data[0]);
int index = 0;
char *getStr() { return index < ndata ? data[index++] : NULL; }
#define SIZE 20 // 配列のサイズ
#define LEN 64 // 文字列の最大長 + 1
int main(void)
{
char a[SIZE][LEN], *p;
int n;
for (n = 0; n < SIZE && (p = getStr()) != NULL; n++)
strcpy(a[n], p); // getStr で取得した文字列を配列 a にコピー
for (int i = 0; i < n; i++) // 確認用
printf("%d: %s\n", i, a[i]); // 配列 a の内容を表示
}
また、setup で設定する「データの列」と、
getStr で取り出す「文字列」の関係はどうなっているのですか?
具体例で示してください。