C 编程 - 限制用户输入一定数量的字符

1 c string scanf

所以我开始这个程序,新的学习阶段,我需要学习如何在我提示用户输入时只允许用户输入一定数量的字符。例如:

char firstname[20];
printf("What is your first name?");
scanf("%s", &firstname);
Run Code Online (Sandbox Code Playgroud)

我只希望用户能够键入和输入 20 个字符。我将如何解决这个问题,并且在提示用户仅输入数字时是否会采用相同的方式?

Sou*_*osh 5

我只希望用户能够输入和输入 20 个字符

好吧,您只能指导用户并期望他们遵循。您无法阻止用户输入多个n字符,但是,以编程方式,您只能将扫描限制为n字符,使用

char firstname[20];
printf("What is your first name?");
scanf("%19s", firstname);           //& not needed
Run Code Online (Sandbox Code Playgroud)

为空终止符留出空间。

在情况下,名称中含有空格,%sscanf()将无法处理输入。在这种情况下,您可能希望使用fgets() which 可以处理输入字符串中存在的空格。

那说,

  1. 您可能希望在扫描后清理剩余字符的输入缓冲区。
  2. 始终检查 的返回值scanf()以确保扫描成功。