逆序字符串使用函数的方法解决明确一下几点:
- 自定义函数deverse传的参数为char*str-首元素地址。
- 在printf打印字符串时,从首元素地址开始到'\0'为结束标志。
- 输入函数gets和scanf区别:前者打印空格,后者遇到空格、Tab键或回车默认为'\0'以结束。
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<assert.h> void deverse(char*str) { assert(str); char tmp = 0; int ret = strlen(str); char*left = str; char*right = str + ret -1; while(left<right) { tmp = *left; *left = *right; *right = tmp; left++; right--; } } int main() { char arr[100] = {0}; gets(arr); //读取一行数据(包含空格),从arr数组第一个元素地址开始,\0结束 //scanf("%s",arr); //scanf函数遇见空格、Tab键或回车默认为\0 printf("原始字符串为:%s\n",arr); deverse(arr); printf("逆序后字符串为:%s\n",arr); system("pause"); return 0; }