C语言关于fgets使用的疑问
  • 板块学术版
  • 楼主hanzuorui
  • 当前回复4
  • 已保存回复5
  • 发布时间2025/1/26 23:55
  • 上次更新2025/1/27 14:10:27
查看原帖
C语言关于fgets使用的疑问
677589
hanzuorui楼主2025/1/26 23:55

请各位大佬们多多指教关于fgets的使用细节

首先,fgets用于读取整行的字符串,但本人在使用的过程中存在一些疑问

1、如果前面输入某数值后fgets为什么不能紧跟着使用?

例如本程序:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int a;
	scanf("%d",&a);
	char d[100];
	fgets(d,sizeof(d),stdin);
  return 0;
}

经过测试可知,输入完a后程序会直接停止,无法输入字符串s,本人猜想是因为a后的换行符,所以添加一个字符串,先读入换行符

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int a;
	scanf("%d",&a);
	char s[0];
	char d[100];
	scanf("%c",&s[0]);
	fgets(d,sizeof(d),stdin);
  return 0;
}

请问本处理方法是否正确,或者是否有其它处理方法

2、fgets为什么会修改其它数的数值?

例如本段程序

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int a;
	scanf("%d",&a);
	printf("%d",a);
	char s[0];
	char d[100];
	scanf("%c",&s[0]);
	fgets(d,sizeof(d),stdin);
	printf("%d",a);
  return 0;
}

我们可以发现,在执行完fgets这一行后,a的值被修改了,请问这是为什么,如何处理

最后,感谢各位大佬花费时间和精力阅读并解决这两个问题,感激不尽!!!
2025/1/26 23:55
加载中...