- ベストアンサー
文字列を配列として扱う方法について
文字列を配列に格納したいのですが、うまくいかずに困っています。 例えば、 a[1]=1番目のファイル.csv; a[2]=2番目のふく; a[3]=凄く長い名前.csv; としたいと考えています。 どのようにすればいいのでしょうか? 数字を配列に格納することはできます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
C++であれば... std::string a[3]; a[0] = "1番目のファイル.csv"; a[1] = "2番目のふく"; a[2] = "凄く長い名前.csv"; とすればOKです。 Cでは... char *a[3]; a[0] = "1番目のファイル.csv"; a[1] = "2番目のふく"; a[2] = "凄く長い名前.csv"; これでも済みますが、文字列をコピーする必要があるならずっと難しくなります。 char *a[3]; char *s; size_t n; s = "1番目のファイル.csv"; n = strlen(s); a[0] = malloc(n); if (a[0] == NULL) /* エラー処理 */ strcpy(a[0], s); /* 以下、a[1]とa[2]も同様 /
その他の回答 (3)
- jacta
- ベストアンサー率26% (845/3158)
> いっこ足りない。 失礼しました。 ご指摘ありがとうございます。
お礼
ありがとうございます。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> n = strlen(s); > a[0] = malloc(n); いっこ足りない。 n = strlen(s) + 1; a[0] = malloc(n);
お礼
訂正ありがとうございます。うまくいかず悩んでました。
- Cfg4sA3W4s
- ベストアンサー率38% (31/81)
CやC++にはJavaと違って、文字列型はありません。したがって、文字列型の配列は作れません。 CやC++で文字配列を扱うには、文字の配列を作ります。同様に、文字の配列の配列、つまり、文字の2次元配列を作ればいいのです。参考: http://www.geocities.jp/ky_webid/c/025.html
お礼
ありがとうございます。
お礼
ありがとうございます。うまくいきました。