2015-04-02 58 views
0

我的任务是将v1连接到v2,功能my_strcat()必须是void。我怎样才能使用void函数来返回串联的字符串?C中的连接字符串

int main(void){ 
    char v1[16], v2[16]; 
    int i1, i2; 
    printf("Enter First Name: \n"); 
    scanf("%s", v1); 
    printf("Enter Last Name: \n"); 
    scanf("%s", v2); 
    i1 = my_strlen(v1); 
    i2 = my_strlen(v2); 
    printf("len: %3d - string: %s \n", i1, v1); 
    printf("len: %3d - string: %s \n", i2, v2); 
    my_strcat(v1, v2); 
    printf("Concatenated String: %s \n", v1); 
    return 0; 
} 

void my_strcat (char s1[], char s2[]){ 
    int result[16]; 
    int i = 0; 
    int j = 0; 
    while(s1[i] != '\0'){ 
     ++i; 
     result[i]= s1[i]; 
    } 
    while(s2[j] != '\0'){ 
     ++j; 
     result[i+j] = s2[j]; 
    } 
    result[i+j] = '\0'; 
} 
+0

可能重复:http://stackoverflow.com/questions/308695/how-to-concatenate-const-literal-strings-in-c – sam 2015-04-02 18:41:41

+0

只需通过一个缓冲器(例如数组)的函数存储新的字符串。 – teppic 2015-04-02 18:43:32

+0

我该怎么做? @teppic – user4766244 2015-04-02 18:45:14

回答

0
void my_strcat (char s1[], char s2[],char result[]){ 
    int result[16]; 
    int i = 0; 
    int j = 0; 
    while(s1[i] != '\0'){ 
     result[i]= s1[i]; 
     ++i; 
    } 
    while(s2[j] != '\0'){ 
     result[i+j] = s2[j]; 
     ++j; 
    } 
    result[i+j] = '\0'; 
} 

你可以这样做this..I的main()宣布第三结果字符串,其尺寸为尺寸(V1)+尺寸(V2)+1

char result[33]; 
my_strcat(v1,v2,result); 

输出:

Enter First Name: avinash 
Enter Last Name: pandey 
len: 7 - string: avinash 
len: 6 - string: pandey 
Concatenated String: avinashpandey 
+0

所以我需要在函数中添加'char result []'并在'main ='[s1] + v2 [s2] + 1' @avinashpandey中声明一个字符串。 – user4766244 2015-04-02 18:49:54

+0

没有不那样,看看代码。我的意思是结果字符串的大小应该等于比两个字符串长度的总和更大.Declare结果像一个普通的字符串,但将它作为my_strcat(v1,v2)传递给函数,result)。由于字符串也是一个数组,所以它被作为参考传递,因此函数结果的任何变化都会反射回main()。 – 2015-04-02 18:53:02

+0

当我运行程序时,它给了我连接字符串@avinashpandey的怪异符号。 – user4766244 2015-04-02 19:03:04