c primmer Plus第六版第十一章编程练习第7题

本文介绍了一个使用C语言实现的字符串处理程序,包括自定义的字符串读取和复制函数。通过s_gets函数读取字符串并移除尾部换行符,mystrncpy函数则将一个字符串复制到另一个字符串中,同时进行长度检查以防止超出数组边界。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<string.h>
#define MAX 80
#define LIN 20
char *s_gets(char *st,int n); //输入数组,没有换行符
char *mystrncpy(char *s1,char *s2,int n); //把s2数组添加到s1数组中,超过80或s2数组大于20截断数组,返回s1的值
int main(void)
{

char s1[MAX];
char s2[MAX];
while(s1[0]!='\0'||s2[0]!='\0') //循环输入俩个数组,
{
    puts("请输入第一组字符串:");
    s_gets(s1,MAX);
    puts("请输入第二组字符串:");
    s_gets(s2,MAX);
    puts(s1);
    puts(s2);
    mystrncpy(s1,s2,LIN);
    puts(s1);
   
}

return 0;

}
char *s_gets(char *st,int n)
{
char *ret_val;
ret_val=fgets(st,n,stdin);
if(ret_val)
{
while(*st!=’\n’&&*st!=’\0’)
st++;
if(*st==’\n’)
*st=’\0’;
else
while(getchar()!=’\n’)
continue;

}
return ret_val;

}

char *mystrncpy(char *s1,char *s2,int n)
{
char *s3;
int i;
int j;

s3=s2;  //不会改变s2数组
for(i=0,j=strlen(s1);i<n;i++) //j表示s1数组末尾位置,
{
    
    s1[j+i]=s3[i];
    if((j+i)>=MAX){ //数组最大元素='\0'截断数组输入
       s1[j+i]='\0';
    break;
    }
}
return s1;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值