使用C语言编写一函数,将字符串s的正序反序连接在一起放在t所指的数组中,自定义函数为格式为:void str_cat(char *s,char *t)
时间: 2023-11-22 18:53:56 浏览: 98
以下是使用C语言编写的将字符串s的正序反序连接在一起放在t所指的数组中的函数:
```c
#include <stdio.h>
#include <string.h>
void str_cat(char *s, char *t) {
int i, j, len;
len = strlen(s);
for (i = 0, j = len - 1; i < len; i++, j--) {
t[i] = s[i];
t[len + i] = s[j];
}
t[2 * len] = '\0';
}
int main() {
char s[] = "hello";
char t[12];
str_cat(s, t);
printf("%s\n", t);
return 0;
}
```
函数`str_cat`接收两个参数`s`和`t`,分别表示输入的字符串和输出的字符串。函数首先计算字符串`s`的长度,然后将字符串`s`的正序和反序依次复制到`t`所指的数组中。最后,在`t`数组的末尾添加一个空字符,以确保它是一个有效的C字符串。
在主函数中,我们定义了一个字符串`s`和一个字符数组`t`,并将字符串`s`传递给`str_cat`函数。然后,我们打印出`t`数组中的字符串。运行程序,输出结果为:
```
helloolleh
```
相关问题
c语言,编写函数f,将字符串反序存放,在主函数中输入一个字符串,最后输出反序的字符串
好的,我可以为您编写一个C语言程序实现这个功能。程序如下:
```c
#include <stdio.h>
#include <string.h>
void f(char str[]);
int main() {
char str[100];
printf("请输入一个字符串:\n");
gets(str);
f(str);
printf("反序后的字符串为:%s\n", str);
return 0;
}
void f(char str[]) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
```
运行程序后,您可以输入一个字符串,程序会将这个字符串反序存放,并输出反序后的字符串。注意:由于使用了`gets`函数,输入字符串时要注意输入的长度不能超过99个字符。如果使用`scanf`函数输入字符串,需要使用`%s`格式化字符串,并且要注意空格和换行符的处理。
下面程序的功能是:调用merge函数,实现将指针s所指的字符串的反序和正序连接后形成一个新的字符串并存放在原处。如字符串为 “1234”,执行函数后,字符串为“12344321”.c语言编写
以下是实现该功能的C语言代码:
```c
#include <stdio.h>
#include <string.h>
void merge(char *s) {
int len = strlen(s); // 获取字符串长度
char *p = s + len; // 指针p指向字符串结束位置
while (--p >= s) { // 倒序遍历字符串
*(p + len) = *p; // 将每个字符复制到新字符串的末尾
}
strncpy(s + len, s, len); // 将原字符串复制到新字符串的末尾
*(s + 2 * len) = '\0'; // 末尾添加结束符
}
int main() {
char s[] = "1234";
printf("Before merge: %s\n", s);
merge(s);
printf("After merge: %s\n", s);
return 0;
}
```
程序先通过`strlen`函数获取字符串`s`的长度,然后定义一个指针`p`指向字符串的最后一个字符。接着使用`while`循环倒序遍历字符串,将每个字符复制到新字符串的末尾。最后,使用`strncpy`函数将原字符串复制到新字符串的末尾,并在末尾添加结束符。程序运行结果如下:
```
Before merge: 1234
After merge: 12344321
```
阅读全文