c - 确保输入是一个字符
问题描述
这可能是一个菜鸟问题,但我需要确保用户给出的输入是数据类型 char [%c] 或字符串 [%s]。
如果它是一个整数,我会做这样的事情:
int data, x;
do {
printf("Please enter a number: ");
x = scanf(" %d", &data);
getchar();
} while(x!=1);
所以我想知道是否有类似的方法可以做到这一点,如果输入应该是字符串或字符。谢谢,任何帮助将不胜感激!
解决方案
避免使用%c
in因为会输入scanf()
一些意想不到的字符。\r\n
您可以使用 achar[2]
接收单个字符。将在您的字符串后面填充一个\0
以表示字符串的结尾,因此数组的长度必须大于 1。
一个例子:
#include <stdio.h>
int main()
{
char data[2];
scanf("%1s", data);
if (data[0] >= 'a' && data[0] <= 'z') // custom your constraint here
{
// legal
printf("legal: %s", data);
}
else
{
// illegal
printf("illegal: %s", data);
}
return 0;
}
当我输入b
时,data
将是"b\0"
。
推荐阅读
- git - 重置分支后 git 提交是否会被删除?
- python - 如何打印出 Random.Randint() 函数的相同返回值
- python - 根据另一个查询集 django 的结果检查一个查询集的结果
- php - 为什么我的 PHP 错误消息不能正常工作?
- qt - 用最新的 QT 编译 libwebsocket
- python - 如何使用 re.findall() 从文本文件中提取所有数字并使用 for 循环计算总和?
- python - Django 应用程序在本地工作但不在 Heroku 中:找不到 MarkdownX 模块
- r - 有效替代 for 循环分组数据以计算条件滚动最大值和最小值
- javascript - redux-form + react-widgets DateTimePicker
- javascript - 将 KB4486474 应用于 IE11 后,无法在 Javascript 中为图像源分配相对路径