我写了一段代码,可以从键盘输入地址。但是,我无法弄清楚如何能够读取特殊字符,例如hypen,冒号等。您能否建议对我的代码进行一些编辑:
#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
没有逗号,没有连字符,没有显示数字。
感谢您的帮助和评论。
答案 0 :(得分:8)
将它们逐个添加到可接受的字符列表中,如下所示:
"%[a-z | A-Z | 0-9/,.-]"
由于您将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);