您的位置:首页 > 编程语言 > C语言/C++

函数_指针

2015-12-03 20:20 369 查看
刚刚学习指针,忙活了一个下午,终于把这道题给写出来了

编写四个函数:strlen    strtrim    strltrim    strrtrim。分别用于求出给定字符串长度(不包括末端字符),去除给定字符串两边的空格(中间不去除),去掉左边的空格和去掉右边的空格。代码如下:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int Strlen(char *p);

void Strtrim(char *p,
char *p2, char *p4);

void Strltrim(char *p,
char *p1);

void Strrtrim(char *p,
char *p2);

int main(int argc,
const char * argv[]) {

    char array[] =
"   H e l l o   W o r l d !   ";
   
char *array2 = (char *)
malloc(sizeof(char) *
50);
   
char *array3 = (char *)
malloc(sizeof(char) *
50);
   
char *array4 = (char *)
malloc(sizeof(char) *
50);
   
int len = Strlen(array);

    printf("给定字符串长度是%d\n",len);

    
   
Strtrim(array, array3, array4);

    
   
Strltrim(array, array2);

    
   
Strrtrim(array,array3);

    
   
free(array2);
   
free(array3);
   
free(array4);

      

    
   
return 0;
}

int Strlen(char *p)
{
   
int len = 0;
   
int i = 0;
   
if (*(p+i) != '\0') {
       
while (*(p+i) != '\0') {
            len++;
            i++;
        }
    }
   
return len;
}

void Strtrim(char *p,
char *p2, char *p4)
{
   
int len = Strlen(p);
   
int i = len-1;
   
while ((*(p+i)) ==
' ') {
        i--;

        
       
if ((*(p+i)) != ' ') {

            
           
for (int j =
0; j < len; j++) {

                
                (*(p2+j)) = (*(p+i));
                i--;

                
            }
        }
    }
   
int count = Strlen(p2);
   
for (int i =
0; i < count / 2; i++) {
       
int tmp = p2[i];
        p2[i] = p2[count-i-1];
        p2[count-i-1] = tmp;
    }

    
    i =
0;
    len =
Strlen(p2);
   
while ((*(p2+i)) ==
' ') {
        i++;

        
       
if ((*(p2+i)) != ' ') {

            
           
for (int j =
0; j < len ; j++) {

                
                (*(p4+j)) = (*(p2+i));
                i++;

                
            }

            printf("去掉左右两边的空格后->%s<-\n",p4);
        }
    }
}

void Strltrim(char *p,
char *p1)
{
   
int i = 0;
   
int len = Strlen(p);
   
while ((*(p+i)) ==
' ') {
        i++;

        
       
if ((*(p+i)) != ' ') {

            
           
for (int j =
0; j < len ; j++) {

                
                (*(p1+j)) = (*(p+i));
                i++;

                
            }
           
printf("去掉左边的空格后->%s\n",p1);
        }
    }
}

void Strrtrim(char *p,
char *p2)
{
   
int len = Strlen(p);
   
int i = len-1;
   
while ((*(p+i)) ==
' ') {
        i--;

        
       
if ((*(p+i)) != ' ') {

            
           
for (int j =
0; j < len; j++) {

                
                (*(p2+j)) = (*(p+i));
                i--;

                
            }

            //printf("去掉右边的空格后%s\n",p2);
        }
    }
   
int count = Strlen(p2);
   
for (int i =
0; i < count / 2; i++) {
       
int tmp = p2[i];
        p2[i] = p2[count-i-1];
        p2[count-i-1] = tmp;
    }

    printf("去掉右边的空格后%s<-\n",p2);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 函数 指针 strlen