如何使用scanf函数读取特殊字符(标点符号、连字符、冒号)? [英] How to read special characters (punctuation marks, hypens, colons) using scanf function?

查看:0
本文介绍了如何使用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("

%s

", 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("

%s

", address);

这篇关于如何使用scanf函数读取特殊字符(标点符号、连字符、冒号)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆