一、实验目的
构建trim函数实现对字符串尾部的空格符、制表符与换行符的删除。
同时训练break用法和意义
二、实验内容
1.构建trim函数(有库、无库)
2.构建main函数
3.修改程序
三、实验环境
基于macOS Big Sur版本11.1的Xcode编译器
MacBook Pro (16-inch, 2019)
处理器2.6GHz六核Intel Core i7
内存16GB 2667MHz DDR4
图形卡Intel UHD Graphics 630 1536 MB
四、操作方法和实验步骤
构建trim函数(有库、无库)
/*不使用库函数*/ int trim(char s[]) { /*函数中用到的变量,必须在一开始一次性全部声明*/ int n = 0; int i; while(s[n++]!='\0') ; /* while(s[n++]!='\0') ; 等价于 while(s[n]!='\0') n++; */ for(i=n-2;i>=0;i--) { if((s[i]==' ')||(s[i]=='\t')||(s[i]=='\n')) s[i] = '\0'; else break; } return i; } /*使用string.h中的库函数*/ int Trim(char s[]) { int n; for(n = strlen(s) - 1; n >= 0; n--) { if(s[n]!=' ' && s[n]!='\t' && s[n]!='\n') break; s[n+1] = '\0'; } return n; }
五、程序具体实现
#include <stdio.h> #include <string.h> //trim:remove trailing blacks, tabs, newlines int trim(char s[]); int Trim(char s[]); int main() { char a[] = "hello world! "; int leng = trim(a); printf("The length is %d, %s@@\n",leng, a); printf("There are \"%d\" real characters left\n",Trim(a)); printf("%s",a); } /*不使用库函数*/ int trim(char s[]) { /*函数中用到的变量,必须在一开始一次性全部声明*/ int n = 0; int i; while(s[n++]!='\0') ; /* while(s[n++]!='\0') ; 等价于 while(s[n]!='\0') n++; */ for(i=n-2;i>=0;i--) { if((s[i]==' ')||(s[i]=='\t')||(s[i]=='\n')) s[i] = '\0'; else break; } return i; } /*使用string.h中的库函数*/ int Trim(char s[]) { int n; for(n = strlen(s) - 1; n >= 0; n--) { if(s[n]!=' ' && s[n]!='\t' && s[n]!='\n') break; s[n+1] = '\0'; } return n; }
六、测试结果及讨论
七、实验心得
知道通过调用函数库解决实际问题,同时掌握不调用函数库解决实际问题。