以下程序的功能是将读入的两个字符串进行连接,并存入s1。请将划出错误语句,并改错,输入程序。
时间: 2024-02-16 17:05:31 浏览: 73
基于对知乎热榜话题的数据抓取分析与可视化python实现源码+文档说明(高分完整项目)
```c
#include<stdio.h>
#include<string.h>
int main()
{
char s1[100],s2[50];
gets(s1);
gets(s2);
strcat(s1,s2);
printf("%s\n",s1);
return 0;
}
```
错误语句是`gets(s1)`,这个函数存在缓冲区溢出的安全问题,建议使用`fgets()`函数代替。
修改后的程序如下:
```c
#include<stdio.h>
#include<string.h>
int main()
{
char s1[100],s2[50];
fgets(s1,100,stdin);
fgets(s2,50,stdin);
s1[strcspn(s1,"\n")]='\0'; // 去掉s1字符串中的换行符
strcat(s1,s2);
printf("%s\n",s1);
return 0;
}
```
注意,使用`fgets()`函数读取字符串时,会将输入的换行符也读入字符串中,需要将其替换为字符串结束符'\0',否则后面的字符串连接可能会出错。
阅读全文