gpt4 book ai didi

c - 我怎样才能从键盘上读取一个只有 4 个字母数字字符的字符串,不能少,不能多

转载 作者:太空宇宙 更新时间:2023-11-04 04:17:04 25 4
gpt4 key购买 nike

我需要了解如何从键盘读取包含精确字符数的字符串。

此函数从 main 调用。

void get_string(char *prompt,
char *input,
int length)
{
printf("%s", prompt);

if (!fgets(input, length, stdin))
{
printf("\nErrore: Inserisci correttamente la stringa.\n");
get_string(prompt, input, length);
}
return;
}

获取到的字符串会被复制到input [length]中。

最佳答案

<罢工>使用scanf("%4s") . s 之前的 4在第 4 个字符后停止保存输入。

<罢工>

<罢工>
char buf[4];
scanf("%4s", buf);
printf("%s\n", buf);

input: 123abc
output: 123a

<罢工>

这个解决方案是错误的,因为它不仅会读取字母数字。

我的第二次尝试是更改 scanf对此scanf("%4[a-zA-Z0-9]s", buf);但这会停止在非字母数字上,所以仍然不好。

正确的方法是这样(循环,扫描 1 个字符,检查是否为字母数字):

char buf[32] = "";
for(unsigned idx = 0; idx < 4; )
{
int c = getchar();
if(isalnum(c))
{
buf[idx] = c;
idx++;
}

}
printf("%s\n", buf);

关于c - 我怎样才能从键盘上读取一个只有 4 个字母数字字符的字符串,不能少,不能多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50567283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com