用C语言编程利用指针实现2个字符串的连接
时间: 2024-05-15 22:12:30 浏览: 6
可以先找到第一个字符串的结尾位置,然后从该位置开始将第二个字符串复制到第一个字符串后面。具体实现如下:
```c
#include <stdio.h>
#include <string.h>
void str_concat(char *s1, char *s2) {
// 找到s1的结尾位置
while (*s1) {
s1++;
}
// 将s2复制到s1后面
while (*s2) {
*s1 = *s2;
s1++;
s2++;
}
*s1 = '\0'; // 添加字符串结束标志
}
int main() {
char str1[100] = "Hello";
char str2[] = "world!";
str_concat(str1, str2);
printf("%s\n", str1); // 输出 "Hello world!"
return 0;
}
```
在上面的代码中,`str_concat` 函数接受两个指向字符串的指针 `s1` 和 `s2`,并将 `s2` 复制到 `s1` 的结尾位置。首先,`while (*s1)` 循环找到 `s1` 的结尾位置,然后 `while (*s2)` 循环将 `s2` 中的每一个字符复制到 `s1` 后面,直到 `s2` 的结尾位置。最后,添加字符串结束标志 `\0`。
相关问题
c语言编程:使用指针实现字符串逆序输出
可以用指针来实现字符串逆序输出,代码如下:
```c
#include <stdio.h>
#include <string.h>
void reverse(char *str) {
int length = strlen(str);
char *begin = str;
char *end = str + length - 1;
while (begin < end) {
char temp = *begin;
*begin = *end;
*end = temp;
begin++;
end--;
}
}
int main() {
char str[] = "Hello, world!";
printf("Original string: %s\n", str);
reverse(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
这个程序中,我们定义了一个 `reverse` 函数,它接受一个指向字符串的指针。这个函数首先计算字符串的长度,然后定义了两个指针,一个指向字符串的开头,一个指向字符串的结尾。接下来,我们使用一个循环来交换开头和结尾的字符,直到两个指针相遇为止。最后,我们在 `main` 函数中调用 `reverse` 函数,并将结果输出到控制台上。
用c语言编程,将两个字符串连接起来但不用strcat
你可以使用指针来实现字符串连接,具体步骤如下:
1. 定义一个新字符串,长度为两个字符串长度之和加一(多加一位用于存放字符串结束标志'\0')。
2. 定义两个指向原字符串和新字符串的指针,分别指向原字符串的首地址和新字符串的首地址。
3. 将原字符串的内容复制到新字符串中。
4. 将原字符串指针和新字符串指针分别移动到字符串末尾。
5. 将第二个原字符串的内容复制到新字符串中。
6. 在新字符串末尾添加结束标志'\0'。
7. 返回新字符串的首地址。
下面是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* str_connect(char* str1, char* str2)
{
int len1 = strlen(str1);
int len2 = strlen(str2);
char* new_str = (char*)malloc(sizeof(char) * (len1 + len2 + 1));
if (!new_str) {
printf("Error: memory allocation failed!\n");
exit(1);
}
char* p1 = str1;
char* p2 = new_str;
while (*p1) {
*p2++ = *p1++;
}
p1 = str2;
while (*p1) {
*p2++ = *p1++;
}
*p2 = '\0';
return new_str;
}
int main()
{
char str1[] = "Hello, ";
char str2[] = "world!";
char* new_str = str_connect(str1, str2);
printf("%s\n", new_str);
free(new_str);
return 0;
}
```
输出结果为:Hello, world!