こんにちわ。
空白(スペース)の入った文字列の格納(表示)について質問させてください。
以下のプログラムを実行すると、空白の含む文字列がうまく表示されません。
例えば、 in the worldと入力しても、inしか格納されていないみたいです。それはなぜでしょうか? また、どうすればそれを格納、表示させることができるのでしょうか?教えてください。よろしくお願いいたします。
#include <stdio.h>
#include <string.h>
main()
{
char buf[BUFSIZ];
char moji[31];
int i;
printf("Input string: ");
fgets(buf, sizeof(buf), stdin);
moji[31] = '?0';
sscanf(buf, "%s", moji);
i = 0;
while (moji[i] != '?0') {
printf("%c",moji[i]);
i = i + 1;
}
printf("?n");
printf("%d letters?n", i);
}
【実行例】
csx01:~> gcc prog.c
csx01:~> a.out
Input string: in the world
in
2 letters
No.2ベストアンサー
- 回答日時:
sscanf()などのscanf系統の関数は、空白を読み込みません。
したがって空白で区切られた1部分だけが読み込まれ。
この場合、bufをそのまま出力すればよいです。
#include <stdio.h>
int main(int argc, char **argv) {
char buf[BUFSIZ];
printf("Input string: ");
fgets(buf, BUFSIZ, stdin);
printf(buf);
return 0;
}
参考URL:http://shibu.jp/cppreference/stdio_details.html
No.1
- 回答日時:
>sscanf(buf, "%s", moji);
で、"%s" の書式指定で取り込まれるのは、スペース等のホワイト文字が区切りになります。
なので、最初の"in" までがmoji に取り込まれます
全体が必要ならbuf をそのまま使えば良いような気がします。
それぞれのワードが必要なら
strtok を使って切り出すか
sscanf で次に切り出す位置(in の次)を指定してやるとかしてやればイイかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
ちょっと先の未来クイズ第6問
2025年1月2日と1月3日に行われる、第101回箱根駅伝(東京箱根間往復大学駅伝競走)で、上位3位に入賞するチームはどこでしょう?
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
文字型配列に格納した空白の切捨て
C言語・C++・C#
-
C言語で、メモリを解放しないで終わるプログラム
C言語・C++・C#
-
複数の変数を宣言する時、同時に初期化?できないでしょうか?
Java
-
-
4
fgets関数を使用したときの文字あふれについて
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
#defineが使用するメモリ領域に...
-
【C言語】全角文字の配列を、全...
-
配列への文字列の格納について
-
C言語で複数列のデータを1列の...
-
空白を含んだ文字列がうまく格...
-
リストの作成と出力(C言語)
-
大量のファイルを読み込み、そ...
-
終了条件Ctrl+zについて,結果表...
-
reallocでエラー
-
printf による16進表示について
-
C言語のシリアル通信について
-
信頼区間の1.96や1.65ってどこ...
-
「Aに対するBの割合」と「Aに対...
-
2÷3などの余りについて
-
「指定されたキャストは有効で...
-
エクセルで可視セルにのみ値貼...
-
ある商品のロス率を5%見込み、...
-
数学のデータの相関の散布図で...
-
Aの値からBの値を除するとは??
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
#defineが使用するメモリ領域に...
-
printf による16進表示について
-
C言語で複数列のデータを1列の...
-
【C言語】全角文字の配列を、全...
-
空白を含んだ文字列がうまく格...
-
char型2つを結合し、short型に...
-
C++で指定文字列のカウント方法...
-
構造体メンバの初期化
-
プログラミングの授業の課題です
-
終了条件Ctrl+zについて,結果表...
-
reallocでエラー
-
c言語で文書を読み込み、単語の...
-
小数の指数表示
-
csvファイルの読み取り
-
ファイル操作で全角空白を消す
-
エラーについて質問です。
-
Opencv画像処理 bmp処理
-
C言語でのCSVファイルの読み出...
-
矢印キーを押下してコンソール...
おすすめ情報