gpt4 book ai didi

c - 函数 gets() 不会停止接受输入

转载 作者:行者123 更新时间:2023-11-30 15:42:55 24 4
gpt4 key购买 nike

我正在尝试使用 gets() 将输入输入到 2 个字符串中函数(我必须只使用这个函数)

但是当我运行该程序时,控制台只是继续进入第二个 gets()甚至没有停下来获取第一个输入。

当我调试时,我没有看到任何输入被插入到字符串 cityName 中,它只是掠过它。

我还知道,处理字符串时缓冲区存在问题,有没有办法使用puts()“清理”缓冲区和gets()功能?

#include <stdio.h>
#include <math.h>
#include <string.h>
void main() {
int z;
char cityName[50];
char Coordinates[50];
scanf("%d", &z);
printf("Please enter city name:\n");
gets(cityName);
printf("Please enter city coordinates\n");
gets(Coordinates);
}

最佳答案

在调用 scanf("%d", &z); 时,当您输入一个整数,然后按 ENTER 键时,该数字会被 scanf 消耗,但是新行仍在缓冲区中,导致下一个 gets() 仅获取该新行。

解决办法,首先去掉gets(),我不知道为什么它是你必须使用的唯一函数,它可能会导致缓冲区溢出,因此很危险,使用fgets () 来替换它。其次,使用某种东西来消费新线,你有不止一种选择。例如,对 fgets() 使用一次额外调用。

另外,请使用int main(void),使用declare void main()是未定义的行为。

关于c - 函数 gets() 不会停止接受输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20018854/

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