鱼C论坛

 找回密码
 立即注册
查看: 1668|回复: 2

c++字符串问题求助

[复制链接]
发表于 2015-8-17 23:01:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//为什么最后输出的字符串前后都会多出来两个空格      
// 目标是输出itcast字符串长度为6,   但是程序输出的字符串长度为10

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

int trimSpace(char *inbuf, char *outbuf)
{
        int i = 0, j = 0;
        int ret = 0;
        int count = 0;
        char *tmp = inbuf;
       
        if (inbuf == NULL || outbuf == NULL)
        {
                ret = -1;
                printf("trimSpace() err %d\n", ret);
        }
        int len = strlen(inbuf);

        j = len - 1;
        if (tmp[i] == ' ' && tmp[i] != '\0')
        {
                ++i;
        }

        if (tmp[j] == ' ' && j > 0)
        {
                --j;
        }
        count = j-i+1;
        memcpy(outbuf, inbuf + i, count);
        outbuf[count] = '\0';

        return ret;
}

int getKeyByValude(char *keyvaluebuf,  char *keybuf,  char *valuebuf, int * valuebuflen)
{
        int ret = 0;
        char *p = NULL;
        //int i = 0, j = 0;
        char str[1024];
        if (keyvaluebuf == NULL || keybuf == NULL || valuebuf == NULL || valuebuflen == NULL)
        {
                ret = -1;
                printf("getKeyByValude() err %d\n", ret);
        }

        p = strstr(keyvaluebuf, keybuf);
        if (p == NULL)
        {
        return 0;
        }
        p = p + strlen(keybuf);

        p = strstr(keyvaluebuf, "=");
        if (p == NULL)
        {
                return 0;
        }
        p = p + 1;

        ret = trimSpace(p, str);
        if (ret != 0)
        {
                ret = -2;
                printf("trimSpace() err %d", ret);
        }
        strcpy(valuebuf, str);
        *valuebuflen = strlen(str);

        return ret;
}

int main()
{
        int ret = 0;
        char keyvaluebuf[] = {"ORCALE_name   =   itcast   "};
        char *keybuf = "ORCALE_name";
        char valuebuf[1024];
        int valuebuflen = 0;

        ret = getKeyByValude(keyvaluebuf, keybuf, valuebuf, &valuebuflen);
        if (ret != 0)
        {
        ret = -3;
                printf("getKeyByValude() err %d", ret);
        }

        printf("%s\n", valuebuf);
        printf("%d\n", valuebuflen);
   
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-18 08:21:32 | 显示全部楼层
这个函数你改下
int trimSpace(char *inbuf, char *outbuf)
{
        int ret = 0;
        int len = strlen(inbuf);
        char *pch = outbuf;
        for (int iloop = 0; iloop < len;iloop++){
                if (' ' != inbuf[iloop]){
                        *pch = inbuf[iloop];
                        pch++;
                }
        }
        return ret;
}
QQ截图20150819082328.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-18 18:26:26 | 显示全部楼层
迷雾少年 发表于 2015-8-18 08:21
这个函数你改下
int trimSpace(char *inbuf, char *outbuf)
{

谢谢   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 07:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表