文字列を配列に入れる方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 文字列を配列に入れる方法

Re: 文字列を配列に入れる方法

#2

by かずま » 1ヶ月前

yopi さんが書きました:
1ヶ月前
取り急ぎ、文字列を配列に入れる方法を教えていただきたいです。
文字列のアドレスだけを配列に入れるやり方。

コード:

#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 の内容を表示
}
以上の 2つの方法を試してみて、どちらが希望するものかを教えてください。

また、setup で設定する「データの列」と、
getStr で取り出す「文字列」の関係はどうなっているのですか?
具体例で示してください。

文字列を配列に入れる方法

#1

by yopi » 1ヶ月前

お世話になります。

void setup(int n);
// 長さ n のデータ列を設定する
//nはコマンドラインから取得

char *getStr();
// setup で設定されたデータの列から次の文字列を1つ取り出して返してくる
// データの列が尽きているなら NULL を返してくる

という2つの関数があります。
getStrで取り出したデータを配列に入れていき、
今までと同じ文字列があったらカウントして、
結果、文字列は何種類あって、何個同じ文字列があったか
を出力したいと思っています。


取り急ぎ、文字列を配列に入れる方法を教えていただきたいです。
よろしくお願いします。

ページトップ