• ベストアンサー

scanfでの読み込み文字数制限

scanf( "%10s" , file_name ); とすればfile_nameに読み込む文字数を10バイトに制限できるそうですが、10のところに定数(defineで定義したもの)を指定することはできないのでしょうか? 普通に #define NUM 10 scanf( "%NUMs" , file_name ); としてもできないようでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • symgt
  • ベストアンサー率56% (68/120)
回答No.2

#define NUM 10 のままで sprintf(fmt, "%%%ds", NUM); scanf(fmt , file_name); という方法もあります。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

#define NUM "10" としておいて scanf( "%" NUM "s" , file_name ); とするとか。

hogex
質問者

お礼

その方法で出来ました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • #defineの定数を文字列として読み込む

    #define A "xxx" #define B "yyy" と定義しておいて scanf("%s", str) で読み込んだ文字列strが "xxx"だった場合、"yyy"だった場合のように分岐したいのですが このとき if(str == "xxx") のように中身を指定するのではなく if(str == AA) のように定数で分岐させることってできますか? 上記のままではできませんが、何か特別な関数とかでできるのでしょうか?

  • フォーム要素の文字数制限について

    それぞれのフォーム要素に文字数(またはバイト数)の制限ってあるんでしょうか? あるとしたら何文字ですか? maxlengthなどで指定する値や、受け取るプログラム側の制限ではなく、HTMLの仕様としての制限についてです。 特に知りたいのが、隠しフィールド(input type="hidden")の文字数制限です。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • 制限を無くしたいのですが

    いつもお世話になっております。 また初歩的な質問ですが宜しくお願いします。 掲示板をつくったのですが。件数を20までと指定してしまっています。この件数の制限を無制限にしたいのですが、いまいちうまくいきません。 ------------------------ RECORD_MAX=20;#最大レコード数  ・  ・  ・ open(DATAFILE,">$DATA_FILE_NAME"); print DATAFILE $rec; for($num=0; $num<$RECORD_MAX -1; $num++){ print DATAFILE $lines[$num]; } close(DATAFILE); } ------------------------ 上記です。少々内容を省いた上、みにくくて申し訳ないのですが、 ご助言&プログラムの追記等をお願いできないでしょうか?お願い致します。

    • ベストアンサー
    • Perl
  • defineで定数が置き換えられない?(C言語)

    #defineについて質問です。 #defineは、ソースコード内にこの文字を見つけたら、コンパイルする前にこの文字をこの定数に置き換えて、というプリプロセッサですよね?だから、printfで#defineで定義した定数を出力する場合で、変換指定が必要ない場合は #include <stdio.h> #define DEF 100 void main(){ printf("#defineで定義された定数はDEFです"); } でもいいと思うんです。ですがこのソースコードは間違いで、実行結果は #defineで定義された定数はDEFです(←置き換えられてない) となってしまします。プリプロセッサだけ実行しても、DEFは100に置き換えられずそのままです。printfで#defineで定義した定数を出力させたい場合は書式指定をしなければなりません。なぜ、このような場合は#defineで定義した定数は置き換えられないのでしょうか?回答よろしくお願いします。

  • textareaで入力できる文字数を制限したい。

    フォームについて質問させてください。 テキストフィールドで、シングルラインならば入力できる文字の最大数を maxlength で指定できるのですが、マルチラインの場合、同様に最大数を指定することはできないでしょうか? わかるかた、なにとぞご教授ください。 ■シングルラインでの文字数制限 <input name="thread_title" type="text" id="thread_title" size="80" maxlength="10"> ■マルチライン <textarea name="text" cols="64" rows="10" id="news_text" maxlength="10"></textarea> ↑上記のようにmaxlength入れても駄目でした。。。涙

    • ベストアンサー
    • HTML
  • cgiによる文字入力数の制限について

    perlについては素人な者ですが、私の質問をお願いします。 フリーの掲示板cgiを使っていますが、IDネームを決定する際に入力できる文字数の制限がありません。 「未入力」と「全角」を含む場合は、以下の部分でエラーを出せますが、 if ($in{'name'} eq "" || $in{'name'} =~ /[^a-zA-Z0-9]/) { &error("IDネームを確認してください。");} この箇所に書き加えて、4文字から10文字以内といった文字入力数の制限を加えるにはどうしたらよいのでしょうか? cgiは携帯用なのでJavaScriptは使わない方法で何かあればお願い致します。

    • ベストアンサー
    • CGI
  • 入力制限文字数に関するタグについて

    入力制限文字数に関するタグについて 1) <TEXTAREA>タグを利用した場合の入力文字制限数を指定できるステップを教えてください。 同時に、制限数を超えた場合は、「入力文字が***文字を超えています」等のメッセージも出したいのですが・・・ 2) 1)以外のタグで同じ効果を得られるものをご存知でしたら、合わせてお教えください。

  • バイト数の入力制限の記述の仕方。

    こんにちわ。いつもお世話になっています。 もし、フォームに入力された。バイト数が5以下だったらAという処理。バイト数が6以上だったらBというしょりへ。。という記述をしたいのですが、文字数制限の記述のしかたがわかりません。数字限定だったら if($name < 5){'Aの処理'}というふうにできると思うのですが、アルファベットのときはこれはできないと思うんですね・・・文字数(バイト数)の制限ってどのようにかけばいいのですか?教えてください。

    • ベストアンサー
    • Perl
  • fgets関数とscanfについて

    fgets関数とscanfの意味が似ていると思うんですが、違いは何ですか? 例えば、fgets( str, 81, stdin ) は変数strに80文字制限で、標準入力から入力するという意味ですよね? scanf("%s",s)は変数sに文字列を入力するという意味ですよね? 意味が似てると思うんですが、実際は何が違うんでしょうか? 回答よろしくお願いします。

  • 文字数制限について

    文字数制限について教えてください。 下記のようにPHPで設定しているのですが、 全部数字を入れた場合、日本語よりもかなりオーバーしてしまいます。 バイト数が違うからだと思いますが、 日本語と同じ幅で表示する方法はありますか? $val['aaa'] = mb_strimwidth($val['aaa'], 0, 84, "...", 'UTF-8'); 現在 あああ 111 ↓ 希望 あああ 111111 よろしくお願いします。

    • ベストアンサー
    • PHP