ページ 1 / 1
文字入力で最後にヌル文字
Posted: 2012年8月25日(土) 16:08
by Jimmy
C言語初心者です。
キーボードからの文字入力で最後にヌル文字をつけたいのですが、どうすればいいでしょうか?
strlen()ではヌル文字のない文字列のサイズは測れませんよね?
scanf()で入力しているんですが、ほかにもっといい入力方法はありますか?
違う質問ですが、配列変数の初期値って必ず0ですか?
教えてください。
Re: 文字入力で最後にヌル文字
Posted: 2012年8月25日(土) 16:25
by softya(ソフト屋)
strlenで長さが測れるのは最後にナル文字があるからです。
なのでわざわざナル文字を付けてやる必要はありません。
Re: 文字入力で最後にヌル文字
Posted: 2012年8月25日(土) 16:26
by box
Jimmy さんが書きました:
キーボードからの文字入力で最後にヌル文字をつけたいのですが、どうすればいいでしょうか?
strlen()ではヌル文字のない文字列のサイズは測れませんよね?
scanf()で入力しているんですが、ほかにもっといい入力方法はありますか?
scanf() で入力したとき、ごくふつうに '\0' で終端していませんか?
配列のサイズなどが適切である、という条件は付くと思いますけれど。
具体的に、何か困ったことが起きているのでしょうか?
Jimmy さんが書きました:
違う質問ですが、配列変数の初期値って必ず0ですか?
教えてください。
定義した場所や定義した方法によります。
Re: 文字入力で最後にヌル文字
Posted: 2012年8月25日(土) 16:28
by Dixq (管理人)
> ①キーボードからの文字入力で最後にヌル文字をつけたいのですが、どうすればいいでしょうか?
scanfを使って文字列を受け取っているのであれば、ヌル文字は入っていると思いますが、現状問題が起きているのでしょうか?
> ②strlen()ではヌル文字のない文字列のサイズは測れませんよね?
scanfを使っているのであれば、はかれます。
> ③scanf()で入力しているんですが、ほかにもっといい入力方法はありますか?
getcharやfgetsなど色々あります。
参考
http://www.hpc.cs.ehime-u.ac.jp/ex1/faq/fgets.html
http://www9.plala.or.jp/sgwr-t/c/sec08.html
> ④違う質問ですが、配列変数の初期値って必ず0ですか?
グローバル変数なら0ですが、ローカル変数なら0ではありません。
Re: 文字入力で最後にヌル文字
Posted: 2012年8月25日(土) 16:34
by Jimmy
皆さん、ありがとうございます。
scanf()を使えば自動でヌル文字が入るのですね。
問題は発生していません。配列変数の初期値が0だから、問題が発生しないものかと思っていました。
ですが、必ずしも0とは限らないのですね。