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

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/

10-11 15:39