#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <ctype.h>
int getstr(char* from);
int findTwoPoints(char* from,int* counter);
void main()
{
char str[100]=" abcdefgh ";//不能用char* p=“ abcdef ”模型是因为这种方式的字符串存储在全局区,而全局区的字符不能改变
int strcounter = 0;
findTwoPoints(str,&strcounter);//调用字符计数接口函数
getstr(str);//调用字符获取函数
printf("非空格字符的个数为:%d\n",strcounter);
printf("非空格字符为:%s\n",str);
system("pause");
}
int findTwoPoints(char* from,int* counter)
{
char* tempFrom = from;//从主函数中获取字符串
int i=0,j=strlen(tempFrom)-1;//定义两个计数器,且初始化
int* tempcounter=counter;//定义总计数器
if(tempFrom==NULL||tempcounter==NULL)//如果传入空值,则报错
{
printf("from is NULL or counter is NULL");
return -1;
}
while(isspace(tempFrom[i])&&tempFrom[i]!='\0')
{
i++;
}//从头计数
while(isspace(tempFrom[j])&&tempFrom[j]!='\0')
{
j--;
}//从尾计数
*tempcounter = j-i+1;//记录字符总数,并通过指针修改counter中的值
return 0;
}
int getstr(char* from)
{
char* tempFrom = from;//从主函数中获取字符串
int i=0,j=strlen(tempFrom)-1;//定义两个计数器,且初始化
int counter=0;//定义总计数器
if(tempFrom==NULL)//如果传入空值,则报错
{
printf("from is NULL or counter is NULL");
return -1;
}
while(isspace(tempFrom[i])&&tempFrom[i]!='\0')
{
i++;
}//从头计数
while(isspace(tempFrom[j])&&tempFrom[j]!='\0')
{
j--;
}//从尾计数
counter = j-i+1;//记录字符总数
strncpy(from,from+i,counter);//进行字符的复制
from[counter]='\0';//别忘了在最后加上分隔符
return 0;
}
“两头堵模型”计数+取字符
最新推荐文章于 2024-10-01 20:13:44 发布