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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Jimmy

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

#1

投稿記事 by Jimmy » 13年前

C言語初心者です。

キーボードからの文字入力で最後にヌル文字をつけたいのですが、どうすればいいでしょうか?
strlen()ではヌル文字のない文字列のサイズは測れませんよね?
scanf()で入力しているんですが、ほかにもっといい入力方法はありますか?

違う質問ですが、配列変数の初期値って必ず0ですか?
教えてください。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 13年前

strlenで長さが測れるのは最後にナル文字があるからです。
なのでわざわざナル文字を付けてやる必要はありません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

box
記事: 2002
登録日時: 15年前

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

#3

投稿記事 by box » 13年前

Jimmy さんが書きました: キーボードからの文字入力で最後にヌル文字をつけたいのですが、どうすればいいでしょうか?
strlen()ではヌル文字のない文字列のサイズは測れませんよね?
scanf()で入力しているんですが、ほかにもっといい入力方法はありますか?
scanf() で入力したとき、ごくふつうに '\0' で終端していませんか?
配列のサイズなどが適切である、という条件は付くと思いますけれど。
具体的に、何か困ったことが起きているのでしょうか?
Jimmy さんが書きました: 違う質問ですが、配列変数の初期値って必ず0ですか?
教えてください。
定義した場所や定義した方法によります。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

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

#4

投稿記事 by Dixq (管理人) » 13年前

> ①キーボードからの文字入力で最後にヌル文字をつけたいのですが、どうすればいいでしょうか?

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: 文字入力で最後にヌル文字

#5

投稿記事 by Jimmy » 13年前

皆さん、ありがとうございます。
scanf()を使えば自動でヌル文字が入るのですね。
問題は発生していません。配列変数の初期値が0だから、問題が発生しないものかと思っていました。
ですが、必ずしも0とは限らないのですね。

閉鎖

“C言語何でも質問掲示板” へ戻る