c语言中一些公用的方法

这段由于学业的原因,最近与C有所接触,面向过程与面向对象还是有点区别。

但是方法还是可以写成公用的...下面几个函数感觉用的比较经常点,就贴上来了...

/* 25 ******************子串判断****************************/
/* 参数 ******************SourceStr源串,DesStr判断串****************************/
int StringJudge(char SourceStr[],char DesStr[])
{
  int results=0,i;
  i=strlen(DesStr);/*获取子串的长度*/
  while((SourceStr=strstr(SourceStr,DesStr))!=NULL) /*在字符串中查找到字符串第一次出现的地方*/
  {
 SourceStr=SourceStr+i;/*位置往后移动*/
 results++;
  }
  return results;
}
/* 26 ******************判断输入参数类型是否正确****************************/
int JudgeInputData(char *str, int status)
{
int i=0;
int len = strlen(str);
int boolPoint = 0;
switch(status)
{
case ISNUM:
for (i=0; i<len; i++)
{
if (!(str[i]>=48 && str[i]<=57))
{
return 0;
}
}
return 1;
break;
case ISCHAR:
for (i=0; i<len; i++)
{
if (!( (str[i]>=65 && str[i]<=90) || (str[i]>=97 && str[i]<=122) ))
{
return 0;
}
}
return 1;
break;
case ISFLOAT:
for (i=0; i<len; i++)
{
if ((str[i]>=48 && str[i]<=57) || (str[i]=='.' && boolPoint==0))
{
if (str[i]=='.')
{
boolPoint++;
}
continue;
}
return 0;
}
return 1;
break;
}
return 1;
}
/* 27 ******************输入参数并对其进行判断操作****************************/
/* 参数: ****************** *str(输入字符),len(输入字符长度),*printInfo(输入字符提示),status(输入参数类型),max(限定输入最大值)****************************/
void InputData(char *str, int len, char *printInfo, int status,int max)
{
char ch[1024]={0};
char buf[1024]={0};
int i = 0;
memset(str,0,sizeof(str));
printf(printInfo); // 打印提示信息,让用户输入
sprintf(buf,"输入有误请重新输入!\n%s",printInfo);
switch(status)
{
case ISNUM:
while(1)
{
scanf("%s",ch);
strncpy(str,ch,len);
if (JudgeInputData(ch,status) == 1)
{
if(atoi(str)>max){
sprintf(buf,"输入超过范围%d,请重新输入!\n%s",len,printInfo);
}
else
break;
}
printf(buf); // 打印出错信息,让用户重新输入
}
break;
case ISCHAR:
while(1)
{
scanf("%s",ch);
if (JudgeInputData(ch,status) == 1)
{
break;
}
printf(buf); // 打印出错信息,让用户重新输入
}
strncpy(str,ch,len);
break;
case ISFLOAT:
while(1)
{
scanf("%s",ch);
strncpy(str,ch,len);
if (JudgeInputData(ch,status) == 1)
{
if(atoi(str)>max){
sprintf(buf,"输入超过范围%d,请重新输入!\n%s",max,printInfo);
}
else
break;
}
printf(buf); // 打印出错信息,让用户重新输入
}
break;
default:
break;
}

原文地址:https://www.cnblogs.com/yangzhong/p/1898102.html