用c语言编写合并字符串
时间: 2023-12-10 13:03:54 浏览: 81
以下是用C语言编写合并字符串的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str1[50], str2[50];
printf("Enter the first string: ");
scanf("%s", str1);
printf("Enter the second string: ");
scanf("%s", str2);
strcat(str1, str2);
printf("Concatenated string: %s\n", str1);
return 0;
}
```
在上面的代码中,我们首先定义了两个字符数组 `str1` 和 `str2`,并使用 `scanf` 函数从用户输入中读取两个字符串。然后,我们使用 `strcat` 函数将两个字符串合并到 `str1` 数组中。最后,我们使用 `printf` 函数输出合并后的字符串。
需要注意的是,使用 `strcat` 函数时,要确保 `str1` 数组足够大,以便存储合并后的字符串。否则,可能会导致缓冲区溢出等问题。
相关问题
用c语言编写字符串合并的代码,并且不使用strcat函数
在C语言中,你可以使用指针和循环来实现字符串的合并操作,虽然这不是strcat函数的直接替代,但可以达到类似的效果。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h> // 需要malloc函数
void merge_strings(char **dest, const char *src) {
// 检查源字符串是否为空
if (src == NULL || *src == '\0') {
return;
}
// 如果dest已经指向另一个非空字符串,需要先分配空间容纳新字符
if (*dest != NULL && **dest != '\0') {
*dest = (char*) realloc(*dest, strlen(*dest) + strlen(src) + 1); // 新长度
} else { // 如果dest未初始化,则直接分配空间
*dest = (char*) malloc(strlen(src) + 1);
}
// 将src的内容追加到*dest
int i, j;
for (i = 0, j = strlen(*dest); src[i] != '\0'; ++i, ++j) {
(*dest)[j] = src[i];
}
(*dest)[j] = '\0'; // 结尾添加'\0'
}
int main() {
char *str1 = "Hello, ";
char *str2 = "world!";
str1 = merge_strings(&str1, str2); // 合并两个字符串
printf("%s", str1); // 输出: Hello, world!
free(str1); // 注意释放动态分配的内存
return 0;
}
```
用C语言编写5字符串操作:随机输入两个字符串,完成以下操作:统计第一个字符串中包含的字母、数字、空格和其他符号的数量并统计并输出两个字符串中共有多少相同的字母,以及这些字母和它们各自的出现次数再连接两个字符串。
在C语言中,你可以使用标准库函数来实现这个功能。下面是一个简单的示例,展示了如何随机输入两个字符串,统计字符种类、相同字母及其频率,以及合并字符串。
首先,我们需要包含必要的头文件,创建一个函数来生成随机字符串,以及辅助函数来统计字符类型和计算共同字母及其频率。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
// 函数生成随机字符串
char* generate_random_string(int len) {
static char alphanum[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
char* str = malloc(len + 1);
for (int i = 0; i < len; i++) {
str[i] = alphanum[rand() % strlen(alphanum)];
}
str[len] = '\0';
return str;
}
// 统计字符类型
void count_chars(char* str, char types[], int counts[]) {
for (int i = 0; str[i]; i++) {
if (isalpha(str[i])) {
types['a']++;
counts['a']++;
} else if (isdigit(str[i])) {
types['d']++;
counts['d']++;
} else if (isspace(str[i])) {
types['s']++;
counts['s']++;
} else {
types['o']++; // 其他符号
counts['o']++;
}
}
}
// 找出两个字符串中的相同字母及频次
void find_common_letters(char* str1, char* str2, char common[], int* common_counts) {
memset(common, 0, sizeof(common));
memset(common_counts, 0, sizeof(*common_counts) * 26);
for (int i = 0; str1[i]; i++) {
if (str2[i] && isalpha(str1[i]) && isalpha(str2[i])) {
common[str1[i]-'a'] = true;
common_counts[str1[i]-'a']++;
}
}
}
// 合并两个字符串
char* merge_strings(char* str1, char* str2) {
int total_len = strlen(str1) + strlen(str2) + 1;
char* merged_str = malloc(total_len);
strcpy(merged_str, str1);
strcat(merged_str, str2);
return merged_str;
}
int main() {
srand(time(NULL)); // 设置随机种子
int len1 = rand() % 100 + 1;
char* str1 = generate_random_string(len1);
int len2 = rand() % 100 + 1;
char* str2 = generate_random_string(len2);
char types1[4] = {'\0', '\0', '\0', '\0'};
int counts1[4] = {0, 0, 0, 0};
count_chars(str1, types1, counts1);
printf("String 1: %s\n", str1);
printf("Character count:\n");
printf("- Letters: %d (%c)\n", counts1['a'], 'a');
printf("- Digits: %d\n", counts1['d']);
printf("- Spaces: %d\n", counts1['s']);
printf("- Others: %d\n", counts1['o']);
char types2[4] = {'\0', '\0', '\0', '\0'};
int counts2[4] = {0, 0, 0, 0};
count_chars(str2, types2, counts2);
printf("\nString 2: %s\n", str2);
printf("Character count:\n");
printf("- Letters: %d (%c)\n", counts2['a'], 'a');
printf("- Digits: %d\n", counts2['d']);
printf("- Spaces: %d\n", counts2['s']);
printf("- Others: %d\n", counts2['o']);
char common[26] = {false};
int common_counts[26] = {0};
find_common_letters(str1, str2, common, common_counts);
printf("\nCommon letters and their frequency:\n");
for (int i = 0; i < 26; i++) {
if (common[i]) {
printf("%c: %d\n", 'a'+i, common_counts[i]);
}
}
char* result = merge_strings(str1, str2);
printf("\nMerged string: %s\n", result);
free(str1);
free(str2);
free(result);
return 0;
}
```
在这个示例中,我们首先生成两个随机字符串,然后统计每个字符串中各类型的字符数量。接着找出两个字符串中的相同字母并计算它们的频率。最后,我们将两个字符串合并成一个新的字符串。
阅读全文