gpt4 book ai didi

c - fgets() 没有像我预期的那样工作

转载 作者:太空狗 更新时间:2023-10-29 15:32:09 25 4
gpt4 key购买 nike

谁能告诉我为什么这段代码不起作用?当我运行时,它只打印出“Enter info about trail 1”,没有任何输入,跳到另一个步骤。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 15

void readingArrays(int numberOfTrails,char arr[MAX][20]);

char array[MAX][20];

int main(void)
{
int numberOfTrails;
printf("Enter the number of trails\n");
scanf("%d",&numberOfTrails);

readingArrays(numberOfTrails,array);

return 0;
}

void readingArrays(int numberOfTrails,char arr[numberOfTrails][20])
{
for(int i=0;i<numberOfTrails;i++)
{
printf("Enter info about trails %d\n",i+1);
fgets(arr[i],4,stdin);
//getchar();
//strtok(arr[i], "\n");
printf("%s\n",arr[i]);
}
}

最佳答案

问题

main 中的 scanf 函数读取整数,但将换行符 \n 留在输入流中。当 readingArrays 的第一个循环迭代出现时,fgets 会看到这个换行符并假设您已经输入了您的踪迹信息并按下了回车键。它打印空字符串和换行符,然后继续下一次迭代。

解决方案

一种解决方案是通过在 %d 格式说明符后添加一个空格来告诉 scanf 读取并忽略数字后的空格。

因此,要从标准输入获取 numberOfTrails,您可以这样做

scanf("%d ",&numberOfTrails);

感谢@Ray 指出这个解决方案!

关于c - fgets() 没有像我预期的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33836912/

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