c - 如何使用 scanf 函数读取特殊字符(标点符号、连字符、冒号)?

标签 c character special-characters scanf

我写了一小段代码,可以从键盘输入地址。但是,我无法弄清楚如何才能读取特殊字符,例如连字符、冒号等。您能否建议对下面的代码进行一些修改:

#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/

相关文章:

c++ - 关闭整数的最右边设置位

c - c 中的重构函数

c - 我想用C编写程序打印完整数字的每个数字

c++ - 将带有 '\b' 转义字符(退格键)的字符串转换为普通字符串

c# - 如何将文本格式传递给 .cs 文件?

c# - 在 Xpath 中使用引号

c - 以前的 ___ 声明在这里?

c - 程序不断循环

string - $在字符串中的含义?

HTML/MYSQL 字符显示