C言語初心者です。
キーボードからの文字入力で最後にヌル文字をつけたいのですが、どうすればいいでしょうか?
strlen()ではヌル文字のない文字列のサイズは測れませんよね?
scanf()で入力しているんですが、ほかにもっといい入力方法はありますか?
違う質問ですが、配列変数の初期値って必ず0ですか?
教えてください。
文字入力で最後にヌル文字
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字入力で最後にヌル文字
strlenで長さが測れるのは最後にナル文字があるからです。
なのでわざわざナル文字を付けてやる必要はありません。
なのでわざわざナル文字を付けてやる必要はありません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 文字入力で最後にヌル文字
scanf() で入力したとき、ごくふつうに '\0' で終端していませんか?Jimmy さんが書きました: キーボードからの文字入力で最後にヌル文字をつけたいのですが、どうすればいいでしょうか?
strlen()ではヌル文字のない文字列のサイズは測れませんよね?
scanf()で入力しているんですが、ほかにもっといい入力方法はありますか?
配列のサイズなどが適切である、という条件は付くと思いますけれど。
具体的に、何か困ったことが起きているのでしょうか?
定義した場所や定義した方法によります。Jimmy さんが書きました: 違う質問ですが、配列変数の初期値って必ず0ですか?
教えてください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 文字入力で最後にヌル文字
> ①キーボードからの文字入力で最後にヌル文字をつけたいのですが、どうすればいいでしょうか?
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ではありません。
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ではありません。
-
Jimmy
Re: 文字入力で最後にヌル文字
皆さん、ありがとうございます。
scanf()を使えば自動でヌル文字が入るのですね。
問題は発生していません。配列変数の初期値が0だから、問題が発生しないものかと思っていました。
ですが、必ずしも0とは限らないのですね。
scanf()を使えば自動でヌル文字が入るのですね。
問題は発生していません。配列変数の初期値が0だから、問題が発生しないものかと思っていました。
ですが、必ずしも0とは限らないのですね。