ページ 11

文字入力で最後にヌル文字

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とは限らないのですね。