4

キーボードから住所を入力する小さなコードを書きました。ただし、ハイフンやコロンなどの特殊文字を読み取る方法がわかりません。以下のコードを編集してください。

#include<stdio.h>

main()
{
       char address[80];


       printf("Enter address: ");
       scanf("%[a-z | A-Z | 0-9]", address); //How may I include characters like hypen.
       printf("\n\n%s\n\n", address);
}

私が得ている出力:

Enter Address: Plot No - 16, Palm Grooves, Nagpur - 440022, India

Plot No

カンマ、ハイフン、数字は表示されていません。

ご協力とコメントをありがとうございます。

4

1 に答える 1

8

次のように、受け入れ可能な文字のリストに 1 つずつ追加します。

"%[a-z | A-Z | 0-9/,.-]"

これが ideone の例です。

制限されたサイズのバッファーを使用scanfしているため、バッファー オーバーランを回避するために、フォーマット指定子にサイズ制限を追加することをお勧めします。

char address[81]; // One extra character for padding
printf("Enter address: ");
scanf("%80[a-z | A-Z | 0-9/,.-]", address); // %80 limits the input
printf("\n\n%s\n\n", address);
于 2012-08-03T11:35:24.990 に答える