- #include "stdafx.h"
- #include <stdio.h>
- #include <string.h>
- #include <malloc.h>
- struct st {
- int id;
- char ch;
- char name[10];
- double db;
- };
- char *rtrim(char *);
- char *ltrim(char *);
- char *rjust(char *);
- int _tmain(int argc, _TCHAR* argv[])
- {
- //内存对齐
- int id;
- struct st stu={9,'c',"name",3.14};
- char ch;
- char name[11];
- double db;
- printf("sizeof sturct=%d/n",sizeof(struct st)); //==24
- memcpy(&id,&stu,sizeof(int));
- printf("id=%d/n",id);
- memcpy(&ch,(char *)&stu+sizeof(int),1);
- printf("ch=%c/n",ch);
- memcpy(name,(char *)&stu+sizeof(int)+1,10);
- printf("name=%s/n",name);
- memcpy(&db,(char *)&stu+16,sizeof(double));
- printf("db=%lf/n",db);
- //内存对齐
- //删除右边的空格
- //用字符指针,则rtrim函数中无法修改,产生错误!!!
- //char *trail_str=" AAAAA ";
- char trail_str1[]=" AAAAA ";
- printf("Before rtrim():%s/n", trail_str1);
- printf("length:%d./n", strlen(trail_str1));
- rtrim(trail_str1);
- printf("After rtrim():%s/n", trail_str1);
- printf("length:%d./n", strlen(trail_str1));
- //删除左边的空格
- char trail_str2[]=" AAAAA ";
- ltrim(trail_str2);
- printf("After ltrim():%s/n", trail_str2);
- printf("length:%d/n", strlen(trail_str2));
- //右对齐
- char trail_str3[] = " AAAAA ";
- rjust(trail_str3);
- printf("After rjust():%s/n", trail_str3);
- printf("length:%d/n", strlen(trail_str3));
- return 0;
- }
- char* rtrim(char* str)
- {
- int n = strlen(str)-1;
- while(n>0)
- {
- if(*(str+n)==' ')
- {
- *(str+n)='/0';
- //str[n]='/0';
- n--;
- }
- else
- {
- break;
- }
- }
- return str;
- }
- char *ltrim(char* str)
- {
- strrev(str);
- rtrim(str); //调用上面的rtrim()函数
- strrev(str);
- return str;
- }
- char *rjust(char* str)
- {
- int n = strlen(str);
- char *dup_str;
- dup_str=strdup(str);
- rtrim(dup_str); //调用上面的rtrim()函数
- int m = strlen(dup_str);
- sprintf(str, "%*.*s",n,m,dup_str);
- free(dup_str);
- return str;
- }
常见C语言面试题之四:删除字符串头尾空格,字符串右对齐
最新推荐文章于 2021-05-18 10:54:10 发布