字符串长度错误

Pat*_*tel 2 c string loops

我正在使用fgets函数从stdin读取字符串,然后尝试打印字符串的长度,但是我总是第一次得到字符串的长度为1这是我的代码

#incldue<stdio.h>
#include<string.h>
int main(void)
{
   printf("\n Enter the no of test cases");
   scanf("%d",&t);
   int i,j;
   for(i=0;i<t;++i)
   {
     char song[500],val[28];
     int k=0,x=0;
     fgets(song,500,stdin);
     int len=strlen(song);
     printf("\nlen=%d",len);
   }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我总是得到1作为第一个测试用例的长度:/请建议我哪里出错了

Kar*_*R.S 5

您没有清除输入缓冲区.在给第一个scanf换行符输入值后会出现.所以fgets不会得到用户的意见.换行符将放在第一个(song[0])位置的缓冲区中.所以这就是strlen作为值返回的原因1.

在此之前制作此行fgets.

int c;
if ( i == 0 )
    while((c=getchar()) != '\n' && c != EOF );
fgets(song,500,stdin);
Run Code Online (Sandbox Code Playgroud)

或者从获取输入后放置此行scanf.

scanf("%d",&t);
while((c=getchar()) != '\n' && c != EOF );
Run Code Online (Sandbox Code Playgroud)