怎么了我没有将我的字符串连接起来吗?

时间:2019-11-03 10:14:52

标签: c

我已经根据朋友给出的算法编写了此代码。但是,当我尝试实现它时,它不起作用。有人可以在这里告诉我错误吗?

#include<stdio.h>
void scat(char [], char []);
int i,j;
void main()
{

    char s1[10],s2[10];
    printf("Enter first string: ");
    scanf("%s",&s1);

    printf("Enter second string: ");
    scanf("%s",&s2);

    scat(s1,s2);
}

void scat(char s1[], char s2[])
{
    char str1[10],str2[10],str3[20];

    for(i=0;str1[i]!=NULL;i++)
        str3[i]=str1[i];

    for(j=0;str2[j]!=NULL;j++,i++)
        str1[i]=str3[j];

    printf("\nConcanated string is %s",str3);
}

3 个答案:

答案 0 :(得分:1)

#include<stdio.h>
void scat(char [], char[]);
int main()
{

    char s1[10], s2[10];
    printf("Enter first string: ");
    scanf("%s", s1);

    printf("Enter second string: ");
    scanf("%s", s2);

    scat(s1, s2);
    return 0;
}

void scat(char s1[], char s2[])
{
    char str3[20];
    int i,j;
    for (i = 0; s1[i] != '\0'; i++)
        str3[i] = s1[i];

    for (j = 0; s2[j] != '\0'; j++, i++)
        str3[i] = s2[j];
    str3[i] = '\0';
    printf("\nConcanated string is %s", str3);
}

U在函数中使用了未声明的变量。此外,我还会纠正您犯的一些错误。

答案 1 :(得分:1)

您要复制什么? str1进入str3,str3进入s1。这是什么意思 ?。即使str1,str2也没有任何用处。只是未知字符,因此无法复制它们。试试这个。

void scat(char *s1, char *s2)
{
    char str3[20];

    for(i=0;s1[i]!='\0';i++){
        str3[i]=s1[i];}

    for(j=0;s2[j]!='\0';j++,i++)
        str3[i]=s2[j];

    str3[i]= '\0'; // This is must

    printf("\nConcatenated string is %s",str3);
}

答案 2 :(得分:0)

对于c来说,字符串只是指向char数组的指针,因此无法真正将它们串联在一起。但是我们可以用另一种方式将它们结合起来。我们可以使用string.h库中的strcat。可行:

#include <stdio.h>
#include <string.h>
#define MAX_LIMIT 200

int main() {    char str1[200], str2[200];

    printf("Enter the first string: ");     
    fgets(str1, MAX_LIMIT, stdin);

    printf("Enter the second string: ");    
    fgets(str2, MAX_LIMIT, stdin);

    strcat(str1, str2);

    printf("\nConcanated string is %s", str1);

    return 0; }