谁能告诉我为什么这段代码不起作用?当我运行时,它只是打印出“输入有关线索 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]);
}
}
Issue
main中的scanf函数读取整数,但保留换行符\n
在输入流上。当第一次循环迭代时readingArrays
来了,fgets
看到这个换行符并假设您已经输入了您的踪迹信息并按下了 Enter 键。它打印空字符串和换行符,然后继续下一次迭代。
Solution
一种解决方案是告诉scanf
通过在 %d 格式说明符后添加空格来读取并忽略数字后的空格。
所以要得到numberOfTrails
从标准输入,你会做
scanf("%d ",&numberOfTrails);
感谢@Ray 指出这个解决方案!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)