C言語関係掲示板

過去ログ

No.197.scanf関数での入力文字数指定方法


No.1244

scanf関数での入力文字数指定方法
投稿者---ダイ(2002/03/12 20:16:08)


scanf関数での入力文字数をたとえば10文字までしか入力できないようにするといったことは出来ますか?
出来れば記述の仕方を教えていただきたいと思います。

よろしくお願いいたします。

No.1245

Re:scanf関数での入力文字数指定方法
投稿者---ともじ(2002/03/12 20:52:17)


こんばんは。

>scanf関数での入力文字数をたとえば10文字までしか入力できないようにするといったことは出来ますか?
>出来れば記述の仕方を教えていただきたいと思います。

scanf関数の変換指定では、%に続けて最大フィールド幅を指定できます。
たとえば10文字まで入力したい場合には、
 scanf("%10s",str);
のように記述します。
この場合、10文字以上を入力しても、10文字分しかstrには代入されません。
10文字以下を入力した場合には、strに代入されます。

No.1247

Re:scanf関数での入力文字数指定方法
投稿者---ダイ(2002/03/13 09:18:39)


>この場合、10文字以上を入力しても、10文字分しかstrには代入されません。
>10文字以下を入力した場合には、strに代入されます。
10文字以下の入力の場合でも、10文字分のスペースが表示されてしまいませんでしょうか?10文字までの入力だけれでも、6文字の時は6文字分のスペースで表示させるにはどのようにしたらよいのでしょうか?

No.1251

Re:scanf関数での入力文字数指定方法
投稿者---ともじ(2002/03/13 15:09:48)


>10文字以下の入力の場合でも、10文字分のスペースが表示されてしまいませんでしょうか?10文字までの入力だけれでも、6文字の時は6文字分のスペースで表示させるにはどのようにしたらよいのでしょうか?

6文字入力では、6文字しか入力されません。
下記のプログラムで確認してみてください。
下記のプログラムは大きさ20の配列に初期値として0xffを格納しています。
そこへ最大10文字分の文字列を入力し、配列の中身を入力した文字列も
含めて20バイト表示するようになっています。
入力した文字列と終了コードの'\0'がどのように格納されるか
確認できると思います。

#include <stdio.h>
int main(void)
{
	int i;
	unsigned char str[20] = {0Xff,0xff,0xff,0xff,0xff,
				 0xff,0xff,0xff,0xff,0xff,
				 0xff,0xff,0xff,0xff,0xff,
				 0xff,0xff,0xff,0xff,0xff};
	
	scanf("%10s",str);
	for (i=0; i<20; i++)
		printf("0x%x ",str[i]);
	printf("\n");
	
	return(0);
}


戻る


「初心者のためのポイント学習C言語」 Last modified:2002.05.14
Copyright(c) 2000-2002 TOMOJI All Rights Reserved