本题要求编写程序,使用指针方式实现两个字符串的连接(不能使用strcat函数),并将连接后的字符串输出。\n\n输入格式:\n输入一行以回车结束的非空字符串(不超过40个字符),再输入一行以回车结束的非空字
时间: 2023-05-31 11:17:50 浏览: 435
编一程序,将两个字符串连接起来,不要用strcat函数.cpp
5星 · 资源好评率100%
### 回答1:
符串(不超过40个字符)。\n\n输出格式:\n输出连接后的字符串。\n\n输入样例:\nhello\nworld\n\n输出样例:\nhelloworld\n
解题思路:
1. 定义两个字符数组,分别存储输入的两个字符串。
2. 定义一个指针变量,指向第一个字符数组的末尾。
3. 将第二个字符数组中的字符逐个复制到第一个字符数组的末尾,直到遇到'\'。
4. 输出连接后的字符串。
代码实现:
### 回答2:
这道题要求我们使用指针方式实现两个字符串的连接,即将第二个字符串接在第一个字符串的尾部,最终输出连接后的字符串。由于不能使用strcat函数,我们需要自己编写程序实现字符串的连接。
首先,我们需要定义两个字符串数组和一个指针变量,用来存储输入的两个字符串和连接后的字符串。代码如下:
```c
char str1[41], str2[41], *ptr;
```
然后,我们需要读入输入的两个字符串,并确定它们的长度。为了方便起见,我们可以使用fgets函数读入字符串,并截断字符串最后的回车符,同时使用strlen函数获取字符串的长度。代码如下:
```c
fgets(str1, 41, stdin);
fgets(str2, 41, stdin);
str1[strlen(str1)-1] = '\0';
str2[strlen(str2)-1] = '\0';
int len1 = strlen(str1);
int len2 = strlen(str2);
```
接下来,我们需要将第二个字符串连接到第一个字符串的尾部,这就需要使用指针变量进行操作。我们可以将指针变量指向第一个字符串的尾部,然后使用一个循环依次将第二个字符串中的字符复制到指针变量所指的位置,直到将第二个字符串复制完毕。复制时,我们需要将指针变量向前移动一位,以便存储下一个字符。代码如下:
```c
ptr = str1 + len1;
int i;
for (i = 0; i < len2; i++) {
*ptr++ = str2[i];
}
```
最后,我们需要将连接后的字符串输出。由于连接后的字符串已经存储在第一个字符串数组中,所以直接输出就可以了。代码如下:
```c
printf("%s", str1);
```
完整的程序代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[41], str2[41], *ptr;
fgets(str1, 41, stdin);
fgets(str2, 41, stdin);
str1[strlen(str1)-1] = '\0';
str2[strlen(str2)-1] = '\0';
int len1 = strlen(str1);
int len2 = strlen(str2);
ptr = str1 + len1;
int i;
for (i = 0; i < len2; i++) {
*ptr++ = str2[i];
}
printf("%s", str1);
return 0;
}
```
### 回答3:
这是一道有关指针的编程题,需要我们使用指针的方式实现两个字符串的连接,并将连接后的字符串输出。在解答这个问题之前,我们需要先了解一些基本的概念。
在C语言中,一个字符串通常指的是一个以'\0'结尾的字符数组,我们可以通过定义一个字符数组来创建一个字符串。例如,定义一个字符串s:
char s[20] = "hello world";
其中,字符数组s有20个元素,最后一个元素必须为'\0',否则它不会被认为是一个字符串。
指针是一个变量,它存储的是一个地址,通常用于指向其他变量的地址。我们可以创建一个指向一个字符数组的指针,例如:
char *p = s;
其中,指针p指向字符数组s的首地址。
为了实现两个字符串的连接,我们需要创建一个新的字符数组,并将两个字符串的内容复制到它里面。如何实现呢?
首先,我们需要读入两个字符串输入,使用gets函数可以实现输入字符串,代码如下:
char str1[40], str2[40];
printf("请输入第一个字符串:");
gets(str1);
printf("请输入第二个字符串:");
gets(str2);
接着,我们需要计算出连接后的字符串的长度,即两个字符串的长度之和。代码如下:
int len1 = strlen(str1);
int len2 = strlen(str2);
int total_len = len1 + len2;
接下来,我们需要定义一个新的字符数组,用来存储连接后的字符串。代码如下:
char str3[80];
然后,我们需要将第一个字符串的内容复制到新的字符数组中。这可以通过在第一个字符串内容的结尾处添加第二个字符串内容来实现。代码如下:
char *p = str3;
for(int i = 0; i < len1; i++){
*p = str1[i];
p++;
}
for(int j = 0; j < len2; j++){
*p = str2[j];
p++;
}
*p = '\0';
最后,我们需要输出连接后的字符串。代码如下:
printf("连接后的字符串为:%s", str3);
整个代码如下:
#include <stdio.h>
#include <string.h>
int main(){
char str1[40], str2[40];
printf("请输入第一个字符串:");
gets(str1);
printf("请输入第二个字符串:");
gets(str2);
int len1 = strlen(str1);
int len2 = strlen(str2);
int total_len = len1 + len2;
char str3[80];
char *p = str3;
for(int i = 0; i < len1; i++){
*p = str1[i];
p++;
}
for(int j = 0; j < len2; j++){
*p = str2[j];
p++;
}
*p = '\0';
printf("连接后的字符串为:%s", str3);
return 0;
}
通过上述代码,我们实现了使用指针方式连接两个字符串,并输出连接后的字符串。
阅读全文