我已经根据朋友给出的算法编写了此代码。但是,当我尝试实现它时,它不起作用。有人可以在这里告诉我错误吗?
#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);
}
答案 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; }