字符串函数参数传入传出(去空格)

字符串作为函数参数传入传出

复制代码
/***
delSpace.c
***/
#include<stdio.h>
#include<string.h>

int DelSpace(char *str)
{
    int iRet = -1;
    int i ;
    int j ;
    int ncount = 0;
    char *out = str;
    if(NULL == str )
    {
        printf("the point in is NULL\n");
        return iRet;
    }

    i = 0;
    j = strlen(out) - 1;
    while(isspace(out[i]) && out[i] != '\0')
    {
        i++;
    }

    while(isspace(out[j]) && out[j] != '\0')
    {
        j--;    
    }

    ncount = j - i + 1;
    strncpy(out,out+i,ncount);  //所有指向的地址空间是不能修改的 
    out[ncount] = '\0';
    iRet = 0;
    return iRet;
}

int main()
{
    int iRet = -1;
    //char *p = "   abcdefg     ";  //分配的地址内存位于常量区 
    char buf[256] = "     abcdefd    ";  //这块内存空间分配在临时区栈区,可以进行修改。buf这个变量名是不允许修改的

    //iRet = DelSpace(p);
    iRet = DelSpace(buf);
    if(0 == iRet)
        printf("DelSpace success p = %s\n",buf);
    else
        printf("DelSpace error p = %s\n",buf);
    return 0;
}
复制代码

分为两个字符串传入传出

复制代码
#include<stdio.h>
#include<string.h>

int trimSpace(char *in,char *out)
{
    int iRet = -1;
    int i = 0;
    int j = 0;
    int k = 0;
    char *tempIn = in;

    if(in == NULL || out == NULL)
    {
        printf("NULL is error\n");
        return iRet;
    }

    i = 0;
    j = strlen(tempIn) - 1;

    while(isspace(tempIn[i]) && tempIn[i] != '\0')
    {
        i++;
    }
    while(isspace(tempIn[j]) && tempIn[j] != '\0')
    {
        j--;
    }

    while(i <= j)
    {
        out[k++] = tempIn[i++];
    }

    out[k] = '\0';
    iRet = 0;
    return iRet;
}

int main()
{
    int iRet = -1;
    char *p = "  abcf   ";
    char buf[256] = {0};

    iRet = trimSpace(p,buf);
    if(iRet != 0)
    {
        printf("trimSpace error\n");
    }
    else
    {
        printf("trimSpace success\n");
    }

    printf("buf = %s\n",buf);
    return 0;
    
}
复制代码

 

posted @   王清河  阅读(673)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示