【发布时间】:2013-11-23 14:42:58
【问题描述】:
这是一个使用malloc连接字符串的程序
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char *sconcat(char *ptr1,char *ptr2);
void main()
{
char string1[20],string2[20],*ptr;
clrscr();
printf("enter string 1: ");
gets(string1);
printf("enter string 2: ");
gets(string2);
ptr=sconcat(string1,string2);
printf("output string : %s",ptr);
getch();
}
char *sconcat(char *ptr1,char *ptr2)
{
int len1,len2,i,j;
char *ptr3;
len1=strlen(ptr1);
len2=strlen(ptr2);
ptr3=(char *)malloc((len1+len2+1)*sizeof(char));
for(i=0;ptr1[i]!='\0';i++)
ptr3[i]=ptr1[i];
j=i;i=0;
for(;ptr2[j]!='\0';j++,i++)
ptr3[j]=ptr2[i];
ptr3[j]='\0';
return(ptr3);
}
output:
enter string 1 : this program does
enter string 2 : not give output
output string : this program does
连接字符串需要什么更正。当我在void main() 之后使用char string1[20],string2[20],*ptr; 时,
output:
enter string 1 : is this
enter string 2 : correct ?
output string : correct? ?
【问题讨论】:
-
strlen()的返回类型是size_t。使用size_t len1,len2,i,j,您会发现更大的便携性
标签: c arrays string pointers malloc