如果n大于s2的长度,则仅将s2全部复制即可。函数形式:int my_strncpy(char *s1,char *s2,int n),其中函数返回值为最终连接到s1的字符数。
用C语言编的,为了方便测试,写完了整个程序:
#include<stdio.h>
int my_strncpy(char *s1,char *s2,int n)
{
int i,j=0;
while(s1[j]!='\0') j++; /*指向a的末尾 */
for(i=0;i<n;i++,j++) s1[j]=s2[i];/*循环n次把s2中前n个元素赋给s1末尾 */
return j;
}
main()
{
int i=0,n,count;
char s1[12]="Iam_",s2[10]="not_bad";/*定义两个数组 */
clrscr();
printf("input n:");
scanf("%d",&n);/*输入n值 */
while(s2[i]!='\0') i++;/*i的值等于s2的长度*/
if(n>i) n=i; /*判断:若n大于i即大于s2的数组长度,则令n=i */
count=my_strncpy(s1,s2,n);
puts(s1);
puts(s2);
printf("%d",count);/*count为把s2赋给s1末尾后s1的总长度*/
getch();
}
追问
#include<stdio.h>
int my_strncpy(char *s1,char *s2,int n)
{
int i,j=0;
while(s1[j]!='\0') j++; /*指向a的末尾 */
for(i=0;i<n;i++,j++) s1[j]=s2[i];/*循环n次把s2中前n个元素赋给s1末尾 */
return j;
}
main()
{
int i=0,n,count;
char s1[12]="Iam_",s2[10]="not_bad";/*定义两个数组 */
clrscr();
printf("input n:");
scanf("%d",&n);/*输入n值 */
while(s2[i]!='\0') i++;/*i的值等于s2的长度*/
if(n>i) n=i; /*判断:若n大于i即大于s2的数组长度,则令n=i */
count=my_strncpy(s1,s2,n);
puts(s1);
puts(s2);
printf("%d",count);/*count为把s2赋给s1末尾后s1的总长度*/
getch();
}
追问
clrscr();
这是什么,貌似错了
这是清屏函数,等价于VC里的system("cls");这里只是为了方便测试
温馨提示:答案为网友推荐,仅供参考