c - 在 C 中只接受字母而不接受整数

标签 c

我想知道如何确保只输入字符。有任何想法吗?

printf("Enter Customer Name");

scanf("%s",cname);

最佳答案

您可以读入您的字符串,然后使用 isalpha() 或类似函数对其进行扫描。

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define STR(x) #x
#define SSTR(x) STR(x)
#define STR_FMT(x) "%" SSTR(x) "s"

#define CNAME_MAX_LEN 50

int inputName(char *cname)
{
  size_t i;

  do
  {
    printf("Enter Customer Name: ");
    fflush(stdout);

    if (1 != scanf(STR_FMT(CNAME_MAX_LEN), cname))
      return 1;

    for (i = 0; isalpha(cname[i]); ++i);
  }
  while (i == 0 || cname[i]);

  return 0;
}

int main()
{
  char cname[CNAME_MAX_LEN + 1];

  if (inputName(cname))
  {
    perror("error reading in name!\n");
    return 1;
  }

  printf("cname is '%s'\n", cname);

  return 0;
}

关于c - 在 C 中只接受字母而不接受整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28918949/

相关文章:

c - 单链表C,打印

c - 如何计算 N 维数组的元素地址

c - 使用 scanf 和 family 从 c 中的文件中读取由空格分隔的两个字符串

c - 使用 xml 解析器 expat 获取 xml 数据

c - 计算这个序列的公式是什么?

python - 如何在Python中创建空的C类型数组(或只是一个NULL值)?

c++ - 运行时系统如何在已编译的二进制文件上支持 "GC"?

c - 用C写入bmp文件

cmd 不适用于 C 项目

java - 保证TCP客户端和服务器之间不丢包