fgets内部如何运作?

Reg*_*ser 5 c string gcc

嗯,这是一个基本问题,但我似乎很困惑.

#include<stdio.h>
int main()
{
char a[100];
printf("Enter a string\n");
scanf("%s",a);
}
Run Code Online (Sandbox Code Playgroud)

基本上上面就是我想要实现的目标.如果我输入一个字符串

James Bond
Run Code Online (Sandbox Code Playgroud)

然后我想将它存储在数组a中.但问题是因为只存在James字之间存在空格.那么我该如何解决这个问题呢?

更新
在下面给出的回复之后,我理解fgets()将是更好的选择.我想知道fgets的内部工作,为什么它能够存储带有空格的字符串,而scanf不能这样做.

Qua*_*mis 5

这是你需要的吗?

所有实现都扫描输入文件(或流),直到它达到\n或EOF,或者maxSize命中参数...