程序代码如下:
#include
#include
//获取初始化的字符数组
char* initialize(int length);
int main(void)
{
char *s1, *s2, s;
int length, i=0, cnt=0;
//输入字符串长度
printf("请输入这两串字符的最大长度:");
scanf("%d",&length);
//初始化
s1 = initialize(length*2);
s2 = initialize(length);
//输入
printf("请输入第一串字符:");
scanf("%s", s1);
printf("请输入第二串字符:");
scanf("%s", s2);
//拼接
while(s1[++cnt]!='\0');
while(s2[i]!=0){
s1[cnt++] = s2[i++];
}
//输出
printf("这两串字符的连接为:%s\n", s1);
free(s1);
free(s2);
system("pause");
return 0;
}
char* initialize(int length)
{
int i;
char *s = (char*)malloc(sizeof(char)*length);
for(i=0; i s[i] = '\0'; } return s; } 扩展资料: 计算机对除机器语言以外的源程序不能直接识别,理解和执行,都必须通过某种方式转换为计算机能够直接执行的。 这种将高级程序设计语言编写的源程序转换到机器目标程序的方式有两种:解释方式和编译方式。 解释方式下,计算机对高级语言书写的源程序一边解释一边执行,不能形成目标文件和执行文件。 编译方式下,首先通过一个对应于所用程序设计语言的编译程序对源程序进行处理,经过对源程序的词法分析,语法分析,语意分析,代码生成和代码优化等阶段将所处理的源程序转换为用二进制代码表示的目标程序; 然后通过连接程序处理将程序中所用的函数调用、系统功能调用等嵌入到目标程序中,构成一个可以连续执行的二进制执行文件。调用这个执行文件就可以实现程序员在对应源程序文件中所指定的相应功能。
第一个for加上分号,才是一个完整的for语句;如果没有;那么下面的for就是上面for语句的一部分
第一个for将p指针移到字符串末尾,第二个for将第二个字符串的值从末尾复制到第一个字符串
你的程序应该如下写法:
#include
void main( )
{
char * p , * q, a[80], b[80] ;
p = a ; q = b ;
printf("请输入第一串字符:") ;
gets(a) ;
printf("请输入要连接的字符:") ;
gets(b) ;
for( ; (* p ) != '\0' ; p ++ )
; /* 其中一个单个的分号表示空语句。即什么都不做, 继续执行下一条语句 */
for( ; (* q) != '\0' ; q ++ )
{
( * p ) = ( * q ) ;
p ++ ;
}
(* p) = '\0' ;
printf("连接后的字符串:%s\n", a) ;
}
#include
#include
main()
{
char a[20],b[20],c[40];
char *p1,*p2,*p3;
printf("input a:");
gets(a);
printf("input b:");
gets(b);
p1=a;p2=b;p3=c;
while(*p1!='\0')
{
*p3++=*p1++;
}
while(*p2!='\0')
{
*p3++=*p2++;
}
puts(c);
getch();
}