输入两个字符串,连接成一个字符串,并输出。用指针实现。定义两个字符数组a,b,先将下标定位到a的末尾‘\0’处,再将b的元素赋值给a的对应元素。注意:别忘了添加字符串结束标志‘\0’。
时间: 2024-10-20 21:07:32 浏览: 31
在C语言中,使用指针可以方便地操作字符串并实现它们的连接。假设我们有两个字符数组 `a` 和 `b`,你可以通过以下步骤进行连接:
1. 首先,我们需要确定 `a` 的长度(不包括 '\0' 字符)。通常我们会找到第一个 '\0' 来确定字符串的结束。
```c
size_t a_len = 0;
while (a[a_len] != '\0') {
a_len++;
}
```
2. 然后,计算 `b` 中剩余可用的空间。这可以通过从 `a` 的当前长度加 `b` 的长度减去 1 来得到,因为需要留出空间给 `'\0'`。
```c
size_t space_left = a_len + strlen(b) - 1; // strlen(b) 返回 b 的长度
```
3. 将 `b` 的内容复制到 `a` 的末尾。这里需要用到第二个指针,指向 `b` 的起始位置。
```c
char* b_ptr = b;
for (size_t i = 0; i < space_left; i++) {
a[a_len + i] = *b_ptr; // 指针移动,每次复制一个字符
b_ptr++; // b_ptr 向后移动一位
}
```
4. 最后,在 `a` 的末尾添加 '\0',表示字符串结束。
```c
a[a_len + space_left] = '\0';
```
完整的代码示例:
```c
#include <stdio.h>
#include <string.h>
void string_concatenate(char* a, char* b) {
size_t a_len = 0;
while (a[a_len] != '\0') {
a_len++;
}
size_t space_left = a_len + strlen(b) - 1;
char* b_ptr = b;
for (size_t i = 0; i < space_left; i++) {
a[a_len + i] = *b_ptr;
b_ptr++;
}
a[a_len + space_left] = '\0';
}
int main() {
char a[] = "Hello";
char b[] = "World!";
string_concatenate(a, b);
printf("Concatenated string: %s\n", a); // 输出 HelloWorld!
return 0;
}
```
阅读全文