掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
文字列の動的確保の追加 (ID:56368)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> C++ であれば、標準ライブラリのstd::vector, std::string を > お勧めします。(用法によっては vector を list 等に変えることも検討) 同感です。 "new"にも触れられているのでC++だとは思いますが、もし、Cでなくてはいけ ないのであれば、reallocでメモリを再割当てすることになります。 > realloc() を使って再割り当てしようとしたのですが、 > 使い方がいまいち分かりません。 「いまいち分かりません」と言われちゃうと、どこまでが分かって何が分か らないのかが曖昧で、どうお答えすれば良いか分からないのですが、とりあ えずサンプルを書きましたので参考にしてください(メモリ確保に失敗した ときのエラー処理は省いています)。 #include <stdlib.h> #include <string.h> #include <stdio.h> #define CAPACITY 16 #define BUFFSIZE 256 int main( void ) { size_t size; size_t capacity = CAPACITY; char** text = (char**)malloc( sizeof(char*) * capacity ); size_t i; char buff[BUFFSIZE]; for( size = 0; fgets( buff, BUFFSIZE, stdin ) != NULL; size++ ){ if( capacity <= size ){ capacity *= 2; // 領域を倍に広げる text = (char**)realloc( text, sizeof(char*) * capacity ); } text[size] = (char*)malloc( sizeof(char) * ( strlen( buff ) + 1 ) ); strcpy( text[size], buff ); } for( i = 0; i < size; i++ ){ printf( "%s", text[i] ); } for( i = 0; i < size; i++ ){ free( text[i] ); } free( text ); return 0; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.