我正在使用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作为第一个测试用例的长度:/请建议我哪里出错了
您没有清除输入缓冲区.在给第一个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)
| 归档时间: |
|
| 查看次数: |
404 次 |
| 最近记录: |