質問です。

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

質問です。

#1

投稿記事 by ぽにょ » 16年前

前回は色々とお世話になりました
また質問なのですが
入力した文字列(半角文字、最大20文字)を前後逆に入れ替え表示
入力した文字列の各文字の文字コードを前から順に10進数、16進数で表示
なのですが

私のアルゴリズムでは「配列[20]を用意し、文字列入力のメッセージを促す
fgetsで入力し、入れ替え、表示という感じで作成していこうと思っているのですが
これで大体いけそうな感じでしょうか?
また、入力した文字列の長さを調べるために
strlen関数を使ってみようと思っているのですが
これはヌル文字を除く長さを調べるということなのでしょうか?(本で調べてもよくわかりませんでした)

あと入力した文字列で、改行コードは表示、並び替えをしないためには
ヌル文字を入れればいいという考えでいいのでしょうか?

今のところ、考えはこれぐらいしかまとまっていませんが
助言の方よろしくお願いします。

Dixq (管理人)

Re:質問です。

#2

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

手元にコンパイラはありますか?何のコンパイラをお使いですか?

後、わからないことはグーグルで調べるといいですよ。
例えばstrlenについて調べたいのなら単純にstrlenで検索すればいいです。
プログラムソースサンプルも出てきますし、解説も出てきます。

>これで大体いけそうな感じでしょうか?

いけそうだと思うなら、まず自分でコンパイルしてみましょう。
プログラムは人にきくよりまず自分でトライすることが大事です。
ただコードを完成させて、自分の思うとおりの動作をすることを確認したうえで、
あっているかどうかを聞くことは大事だと思います。

なお、エンター入力によって格納された改行コードを表示したくない場合で、そこまでを文字列としたいなら、
改行コードが入っている要素に終端記号を入れればいいです。

kazuoni

Re:質問です。

#3

投稿記事 by kazuoni » 16年前

入力を求めるならscanf()ではないのですか?

Dixq (管理人)

Re:質問です。

#4

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

scanfは問題があるということで、fgets使う人多いですよ。
scanfが問題あるかどうかについてや、入力うんぬんについてはきじねこ(たかぎ)さんのHP
http://www.google.co.jp/search?hl=ja&q= ... =&aq=f&oq=
で詳しく解説してあるので、そちらや「scanf 危険性」
http://www.google.co.jp/search?hl=ja&q= ... %80%A7&lr=
などでぐぐって調べてみてください。

あ、見る順番は下のリンク先が先の方がいいかもしれません。

他にもgetcharとかもありますし、色んな方法で入力できます。

SCI

Re:質問です。

#5

投稿記事 by SCI » 16年前

fgetsはgetsと違って改行文字も読むから注意が必要ですね。
最初はscanfを使って実装してもいいと思います。
もちろん、改行文字のとこに終端文字を入れるというのが最初から書ければそれで大丈夫です。

strlenは純粋に「文字数」を返します。終端文字は計算に入りません。

kazuoni

Re:質問です。

#6

投稿記事 by kazuoni » 16年前

stdinを使うんでしたっけ^^;
てっきり忘れてました。。
横から失礼しました。。

Dixq (管理人)

Re:質問です。

#7

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

後、本に載ってなかったり、ウェブの参考サイトを見つけることが出来なくても、
自分で書いて試してみたらいいのです。
#include<stdio.h>
#include<string.h>

int main(void){
	char str[4];
	str[0]='A';
	str[1]='B';
	str[2]='\n';
	str[3]='\0';
	printf("%sの文字数は%d個\n",str,strlen(str));
	return 0;
}

実行結果

AB
の文字数は3個

Dixq (管理人)

Re:質問です。

#8

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

>>kazuoniさん

fが最初に付く関数は「入力先や出力先が指定出来る関数かな?」と思って調べるとだいたいあってることが多いです。
なお、「プログラムに詳しい人しか回答するな」的な雰囲気にはしたくないので、
これからも気軽にコメントして下さいね^^

多分先ほどのやり取りによってより読んでる人が、単なる質問に対するだけの回答より
わかりやすくなったりする場合もあると思うのでむしろ良い効果だと思います。

だいたい詳しい人しか回答出来ない掲示板だったら管理人が発言できn・・(ry

ぽにょ

Re:質問です。

#9

投稿記事 by ぽにょ » 16年前

みなさん、ありがとうございました
今後は自分なりにコードを作成してから質問しようと思います
アルゴリズムがわからなかったらその時点で質問するかもしれませんが・・・

閉鎖

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