//1、有一个字符串开头或结尾含有n个空格(” abcdefgdddd ”),欲去掉前后空格,返回一个新字符串。 //要求1:请自己定义一个接口(函数),并实现功能;70分 //要求2:编写

//1、有一个字符串开头或结尾含有n个空格(”   abcdefgdddd    ”),欲去掉前后空格,返回一个新字符串。
//要求1:请自己定义一个接口(函数),并实现功能;70分
//要求2:编写测试用例。30分
//int trimSpace(char *inbuf, char *outbuf);


#define  _CRT_SECURE_NO_WARNINGS 
#include <stdlib.h>
#include <string.h>
#include <stdio.h>


int trimSpace(char *inbuf, char *outbuf)
{
int ret = 0;
if (inbuf==NULL||outbuf==NULL)
{
ret = -1;
printf("func err:inbuf==NULL||outbuf==NULL");
return ret;
}
char *tmpin = inbuf;
char *tmpout = outbuf;
int  i = 0;
int j = 0;
while (*(tmpin + i) != '\0')
{
if (*(tmpin + i) != ' ')
{
*(tmpout + j) = *(tmpin + i);
i++;
j++;
}
else
{
i++;
}
}
tmpout[j] = '\0';
return ret;
}


int trimSpace1(char *inbuf, char *outbuf)
{
int ret = 0;
if (inbuf == NULL || outbuf == NULL)
{
ret = -1;
printf("func err:inbuf==NULL||outbuf==NULL");
return ret;
}
char *tmpin = inbuf;
char *tmpout = outbuf;
int  i = 0;
int j = 0;
//注意' '跟'\0'不一样
while ((*(tmpout + j) = *(tmpin + i)) == ' ') i++;
while ((*(tmpout + j) = *(tmpin + i)) != ' ' && (*(tmpout + j) = *(tmpin + i)) != '\0' ) i++, j++;
tmpout[j] = '\0';
return ret;
}


int  main0401()
{
char *p = "    abcdefgdddd    ";
char str[50];
int ret = 0;
//ret=trimSpace(p,str);
//ret = trimSpace1(p, str);
if (ret!=0)
{
printf("func err:inbuf==NULL||outbuf==NULL");
return ret;
}
printf("str:%s\n",str);
system("pause");
return 0;
}


int trimSpace2(char **inbuf, char **outbuf)
{
int ret = 0;
if (inbuf == NULL || outbuf == NULL)
{
ret = -1;
printf("func err:inbuf==NULL||outbuf==NULL");
return ret;
}


char *tmpin, *tmpout;
tmpin = (char *)malloc(100);
strcpy(tmpin, "    abcdefgdddd    ");
*inbuf = tmpin;


tmpout = (char *)malloc(100);
*outbuf = tmpout;
int  i = 0;
int j = 0;
while (*(tmpin + i) != '\0')
{
if (*(tmpin + i) != ' ')
{
*(tmpout + j) = *(tmpin + i);
i++;
j++;
}
else
{
i++;
}
}
tmpout[j] = '\0';
return ret;
}
int  main()
{
char *p = NULL;
char *p1 = NULL;//用这个就结果正常
//char p1[100];
//为什么用这个,结果报错  因为形参里面他在分配内存大小,你这两个内存大小不一样,不报错才怪,既然已经交给形参函数里分配大小,这里就不要去分配
int ret = 0;


ret = trimSpace2(&p, &p1);
if (ret != 0)
{
printf("func err:inbuf==NULL||outbuf==NULL");
return ret;
}
printf("p1:%s\n", p1);
system("pause");
return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值