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

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

"%[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 回答