我想寫結合2串入一個字符串,它是按字母順序排列的2串都只是小字母和字母升序遞歸函數。例如: s1:「aegiz」s2:「abhxy」s3:「aabeghixyz」結合2串在另一個字符串按字母順序
我對遞歸函數和C一般還不熟悉,我認爲這可以比我做的更好地解決...
到目前爲止我的代碼:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 50
char *combinealph(char *str1, char *str2, char *str3);
void main()
{
\t char *str1[N], *str2[N],*str3;
\t int length;
\t printf("Enter first string:\n");
\t gets(str1);
\t printf("Enter second string:\n");
\t flushall(1);
\t gets(str2);
\t length = strlen(str1) + strlen(str2);
\t str3 = (char*)malloc((length+1)*sizeof(char));
\t printf("The combined string :\n");
\t puts(combinealph(str1, str2, str3));
\t getch();
}
char *combinealph(char *str1, char *str2, char *str3)
{
\t if (*str1 == '\0' && *str2 != '\0')
\t \t strcpy(str3, str2);
\t \t return str3;
\t if (*str1 != '\0' && *str2 == '\0')
\t \t strcpy(str3, str1);
\t \t return str3;
\t if (*str1 == '\0' && *str2 == '\0')
\t \t \t return '\0';
\t if (*str1 >= *str2)
\t {
\t \t strcpy(str3, str1);
\t \t return strcat(*str3, combinealph(str1 + 1, str2, str3+1));
\t }
\t if (*str1 < *str2)
\t {
\t \t *str3 = *str2; \t
\t \t return strcat(*str3, combinealph(str1, str2 + 1, str3+1));
\t }
}
什麼是你的問題?關於提高代碼的問題屬於在代碼審查http://codereview.stackexchange.com/ –
以及我的代碼不能正常工作,所以我想我怎樣才能使其正常工作是個問題? – n4tri0s
使函數成爲'void'並去掉所有的'return's。擺脫'strcat's,也是。而你有'的strcpy(STR3,STR1);',你的意思是'* STR3 = * STR1;'(從底部5日線)..順便說一句,你在執行操作稱爲 「合併」。 – ooga