请用fgets()函数优化上述程序
时间: 2023-12-16 08:03:43 浏览: 24
当用户输入一个字符串时,我们可以使用C语言编写一个程序来判断该字符串是否为回文字符串。回文字符串是指正向和反向读取都相同的字符串。
下面是使用 `fgets()` 函数优化后的示例程序:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, j, len, flag;
printf("请输入一个字符串:");
fgets(str, sizeof(str), stdin);
len = strlen(str);
if (str[len - 1] == '\n') {
str[len - 1] = '\0'; // 去掉换行符
len--;
}
flag = 1; // 假设为回文字符串
for (i = 0, j = len - 1; i < len / 2; i++, j--)
{
if (str[i] != str[j])
{
flag = 0; // 不是回文字符串
break;
}
}
if (flag == 1)
printf("是回文字符串\n");
else
printf("不是回文字符串\n");
return 0;
}
```
在这个优化后的程序中,我们使用 `fgets()` 函数获取用户输入的字符串,并指定缓冲区的大小为 `sizeof(str)`。然后,我们检查最后一个字符是否为换行符,并将其替换为字符串结束符 `\0`,同时更新字符串的长度 `len`。
接下来的比较和输出逻辑与之前的程序相同。
通过使用 `fgets()` 函数,我们可以更加安全地获取用户输入的字符串,并避免了缓冲区溢出的风险。