gpt4 book ai didi

c - 使用 scanf 进行特定输入

转载 作者:行者123 更新时间:2023-11-30 19:03:16 25 4
gpt4 key购买 nike

#include<stdio.h>

int main(void)
{
char z[10];
scanf("%[aeiou]",z);
printf("%s",z);
return 0;
}

我正在尝试输入一个字符串,并希望输出仅包含 scanf 函数中指定的 a、e、i、o、u。我想尝试仅使用 scanf 获取输出。

最佳答案

1) 避免使用无宽度字符串格式,例如 "%[aeiou]" - 它容易溢出。

2) 检查scanf()返回值。

为了避免 10 等限制,请循环读取输入。

int main(void) {
char z[10];
while (scanf("%9[aeiou]",z) == 1) {
printf("%s",z);
}
printf("\n");
return 0;
}
<小时/>

如果代码需要读取诸如 xxxaxxxxaxxx 之类的输入并仅使用 scanf() 输出 aa,则需要做更多工作。

需要明确的是,scanf() 并不是实现此目标的最佳工具。

关于需要什么的一些未经测试的想法。

int main(void) {
do {
int cnt;
char z[10];
while ((cnt = scanf("%9[aeiou]",z)) == 1) {
printf("%s",z);
}
if (cnt == EOF) {
break;
}

// Find the character that stopped scanning
if ((cnt = scanf("%1[^aeiou]",z)) == 1) {
if (z[0] == '\n') {
break;
}
} else {
break;
}
}
printf("\n");
return 0;
}

关于c - 使用 scanf 进行特定输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54267967/

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