如何使用scanf函数读取特殊字符(标点符号,超标,冒号)?

Nit*_*esh 3 c scanf character special-characters

我写了一小段代码,可以从键盘输入地址.但是,我无法弄清楚如何能够读取特殊字符,例如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);
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

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

Plot No
Run Code Online (Sandbox Code Playgroud)

没有逗号,没有连字符,没有显示数字.

感谢您的帮助和评论.

das*_*ght 8

将它们逐个添加到可接受的字符列表中,如下所示:

"%[a-z | A-Z | 0-9/,.-]"
Run Code Online (Sandbox Code Playgroud)

这是关于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);
Run Code Online (Sandbox Code Playgroud)