gpt4 book ai didi

c - 输入使用 gets 不起作用,但使用 scanf

转载 作者:行者123 更新时间:2023-12-02 07:03:35 25 4
gpt4 key购买 nike

#include<stdio.h>
void main(){
char str[100];
char letter;
letter=getchar();
printf("%c",letter);
gets(str);
//Rest of code
}

执行时,代码会跳过 gets(str) 行。但是当我用 scanf 替换 gets 时,它起作用了。这不起作用的任何具体原因?我正在使用 gcc 4.7.2。

最佳答案

第一次调用 getchar() 会在输入缓冲区中留下一个换行符。下一次调用 gets() 会将换行符视为输入的结尾,因此不会等待您输入。

使用另一个 getchar() 获取换行符。

 ...
letter=getchar();
getchar(); // To consume a newline char left
printf("%c",letter);
fgets(str, sizeof str, stdin);

注意 gets() 很危险,因为它容易受到缓冲区溢出的影响。所以使用 fgets() 代替。

关于c - 输入使用 gets 不起作用,但使用 scanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16300121/

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