gpt4 book ai didi

c - 字符串长度错误

转载 作者:行者123 更新时间:2023-12-04 10:48:58 26 4
gpt4 key购买 nike

我正在使用 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;
}

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

最佳答案

您没有清除输入缓冲区。在将输入值提供给第一个 scanf 后,换行符将在那里。所以 fgets 不会获取用户的输入。换行符将放在该缓冲区中的第一个 (song[0]) 位置。所以这就是 strlen 返回值 1 的原因。

fgets 之前添加这一行。

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

或者在从 scanf 获取输入后放置这一行。

scanf("%d",&t);
while((c=getchar()) != '\n' && c != EOF );

关于c - 字符串长度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29391525/

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