合并两个字符串,将后一个字符串添加到前一个字符串中,指定添加的个数

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void shuru(char* p);
char* mystrncpy(char* s1, char* s2, int n);
int main()
{
char s[100];
char s0[100];
int a;
char* t;
shuru(s);
shuru(s0);
printf(“please enter n:”);
scanf_s("%d", &a);
printf("\n");
t = mystrncpy(s, s0, a);
puts(t);
printf("\n");
printf(“scnaf:%s\n”,t);
puts(s);
printf("\n");
printf(“scanf:%s”, s);

}

void shuru(char* p)
{
printf(“please enter the words:”);
fgets(p,100,stdin);
}
char* mystrncpy(char* s1, char* s2, int n)
{
int i; char b;
b = s1;
while (s1)s1++;
s1–;
for (i = 0; i < n; i++)
{
/
s1 = s1 + i;
s2 = s2 + i;
/

	printf("%d is:%c\n", i, *s1);
	*s1 = *s2;
	printf("%d is:%c\n", i, *s1);
	s1++; s2++;
}
*s1 = '\0';

return b;

}

在调试过程中的几个问题:
1、输入的整数a,如果用getchar函数,只能输入字符,比如输入3,那么a中的不是整数,而是3对应的ascall码51,尝试利用字符串转数字函数atoi,但是发现这个函数好像只针对字符串,单个字符会报错,最后放弃,利用scanf;
2、关于指针函数的返回值,一开始写成 return str1,那么这样返回的只是一个元素;又改成return str1;此时返回的不是数组的首地址,而是最后一个地址,因此在调用函数的刚开始部分加上了 b = s1;此时b就是s1的首地址。
3、看主函数的最后的
s1 = ‘\0’;如果没有这句话输出会有很多乱码,这是因为我们定义的数组长度是100,调用函数处理str1之后字符串最后的结束字符串 '\0’不见了,所以才会有乱码,加上之后就代表在字符串末尾添加结束标志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值