合并字符串.c 896 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <stdio.h>
  2. #include <string.h>
  3. void str_bin(char str1[], char str2[]) {
  4. int len1 = strlen(str1);
  5. int len2 = strlen(str2);
  6. int len = len1 + len2;
  7. char temp[len + 1]; // 临时数组保存合并后的字符串
  8. int i = 0, j = 0, k = 0;
  9. while (i < len1 && j < len2) { // 合并有序字符串
  10. if (str1[i] <= str2[j]) {
  11. temp[k++] = str1[i++];
  12. } else {
  13. temp[k++] = str2[j++];
  14. }
  15. }
  16. while (i < len1) { // 处理剩余字符
  17. temp[k++] = str1[i++];
  18. }
  19. while (j < len2) { // 处理剩余字符
  20. temp[k++] = str2[j++];
  21. }
  22. temp[k] = '\0'; // 添加字符串结束标志
  23. strcpy(str1, temp); // 将合并后的字符串复制回str1
  24. }
  25. int main() {
  26. char str1[200]; // 输入字符串最大为100,合并后最大为200
  27. char str2[100];
  28. scanf("%s %s", str1, str2);
  29. str_bin(str1, str2);
  30. printf("%s\n", str1);
  31. return 0;
  32. }