我写了一小段代码,可以从键盘输入地址。但是,我无法弄清楚如何才能读取特殊字符,例如连字符、冒号等。您能否建议对下面的代码进行一些修改:
#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
没有逗号,没有连字符,没有显示数字。
感谢您的帮助和评论。
最佳答案
将它们一一添加到可接受字符列表中,如下所示:
"%[a-z | A-Z | 0-9/,.-]"
这里是 this example on 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);
关于c - 如何使用 scanf 函数读取特殊字符(标点符号、连字符、冒号)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794885/