#include<stdio.h> #include<string.h> #define MAXS 10 char *str_cat(char *s,char *t); int main() { char *p; char str1[MAXS+MAXS] ={'\0'},str2[MAXS] = {'\0'}; printf("请输入两个字符串:"); scanf("%s%s",str1,str2); p = str_car(str1,str2); printf("%s\n%s\n",p,str1); return 0; } char *str_cat(char *s,char *t) { char srt2; s=srt1; t=str2; } 优化这一代码
时间: 2024-03-12 17:49:15 浏览: 62
这代码有一些问题:
1. 函数 `str_cat()` 的返回值类型应该是 `void`,因为它直接修改了第一个参数指向的字符串,没有返回新的字符串。
2. 函数 `str_cat()` 中的变量名有误,应该是 `srt2` 而不是 `srt1`。
3. 函数 `str_cat()` 中的变量 `s` 和 `t` 指向的是输入的字符串数组 `str1` 和 `str2` 的指针,应该直接使用 `s` 和 `t`,不需要重新赋值。
下面是优化后的代码:
```
#include <stdio.h>
#include <string.h>
#define MAXS 10
void str_cat(char *s, char *t);
int main() {
char str1[MAXS + MAXS] = {'\0'}, str2[MAXS] = {'\0'};
printf("请输入两个字符串:");
scanf("%s%s", str1, str2);
str_cat(str1, str2);
printf("%s\n%s\n", str1, str2);
return 0;
}
void str_cat(char *s, char *t) {
while (*s != '\0') {
s++;
}
while (*t != '\0') {
*s++ = *t++;
}
*s = '\0';
}
```
优化后的代码中,`str_cat()` 函数的功能是将字符串 `t` 拼接到字符串 `s` 的末尾,实现方式是先找到 `s` 的末尾,然后将 `t` 中的字符逐个复制到 `s` 的末尾,最后在 `s` 的末尾添加一个字符串结束符 `\0`。
阅读全文