掲示板ランキング  上下セット・セットアップ  ドレス・スーツ(女の子)


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.6838

scanfの入力で
投稿者---dolphin(2006/11/30 01:52:07)


プレーヤが空白、改行など文字以外のものを入力した場合にscanfが何も反応してくれないのですが、どうすればいいのでしょうか。

たとえば、

int main (void)
{
char x[20];

scanf("%s",x);

・・・

というようなプログラムで、scanfの実行時にスペースを押してエンター、または何も入力せずにエンターを押された場合、プログラムが終了するようにはできないのでしょうか。
どなたか教えていただけませんか><


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:scanfの入力で 6839 かずま 2006/11/30 02:14:25


No.6839

Re:scanfの入力で
投稿者---かずま(2006/11/30 02:14:25)


#include <stdio.h>

int main(void)
{
    char b[1024], x[20];

    if (!fgets(b, sizeof b, stdin) || sscanf(b, "%s", x) != 1) return 1;
    printf("x = '%s'\n", x);
    return 0;
}
スペースを 1000個入れても大丈夫です。


この投稿にコメントする

削除パスワード

No.6840

Re:scanfの入力で
投稿者---dolphin(2006/11/30 02:21:22)


@ロ@;;

ありがとうございましたっ><


この投稿にコメントする

削除パスワード

No.6841

Re:scanfの入力で
投稿者---かずま(2006/11/30 08:55:22)


>   if (!fgets(b, sizeof b, stdin) || sscanf(b, "%s", x) != 1) return 1;

スペース以外の文字を 20文字以上入力されるとまずいですね。訂正します。

    if (!fgets(b, sizeof b, stdin) || sscanf(b, "%19s", x) != 1) return 1;



この投稿にコメントする

削除パスワード

No.6842

Re:scanfの入力で
投稿者---かずま(2006/11/30 11:11:02)


>    if (!fgets(b, sizeof b, stdin) || sscanf(b, "%19s", x) != 1) return 1;
これは、20文字以降を無視するものです。
20文字以上入力されたらエラーにする場合は、
#include <stdio.h>

int main(void)
{
    char b[1024], x[20], c;

    if (!fgets(b, sizeof b, stdin) || sscanf(b, "%19s %c", x, &c) != 1) return 1;
    printf("x = '%s'\n", x);
    return 0;
}



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ